PEAR パッケージ内での色表現

パッケージが色を扱う場合、 開発者は、それら PEAR パッケージ内では、配列による色値の表現を 用いることが推奨されます。 すべての色値は、0 から 255 までの範囲となります。

RGB 表現

以下の短いコードは、公式 PEAR ロゴで使用されている緑色の RGB 定義の 配列を示しています。
$color = array(0x33, 0x99, 0x00);
もしくは、
$color = array(51, 153, 0);
上記例の数値的表現は、双方とも同じものを表しています。 この値は、それぞれ RGB (赤、緑、青) の値を表します。 配列に、"r", "g" や "b" という添字は使用しません。 添字無しの配列の方が記述しやすく、すでに広く使われています。

アルファ値による RGB 表現

上記 RGB 表現の拡張として、第 4 の値にアルファチャンネル表現を 使用することができます。約 80% の不透明度の "PEAR-green" は、以下になります。
$color = array(0x33, 0x99, 0x00, 0xCC);
統一性の面から、アルファ値も 0 から 255 までの値となります。 255 は完全に不透明(RGB 表記と同じ色の鮮やかさ)を、0 は完全に 透明を表します。

このアルファ値は、imagecolorallocate()で使われるものと異なることに 注意してください。PEAR でのアルファ値表現は、RGB との統一性の面から 選択されています。また、(画像処理等の)他のアプリケーションでも よく使われているからでもあります。

RGB(A) 以外の色表現

RGB/RGBAがグラフィックの生成に使用される場合は、 色表現がRGB/RGBAであることを示す識別子を省略できることとしました。 他の色表現を用いる場合は、識別子を記述する必要があります。 識別子 "type" は、以下のように色表現の配列に記述します。
$color = array(0x33, 0x99, 0x00, 0xCC, "type" => "RGB");
現在、以下のタイプが定義されています。 タイプの後に示された色名の順でそれぞれの色の強度を指定します。

RGBA 表現については、タイプ指定は "RGB" とします。

色表現の変換

Image_Color パッケージに、 ある色形式を内部 RGBA 表現に変換したり、異なる色表現へ変換したりするための 関数が (近日中に) 用意される予定です。

現在のところ、色名(たとえば、"green")や 16 進表現文字列(たとえば、 "#339900")を PEAR の RGBA 形式に変換できる関数が実装されています。 アルファチャンネルをサポートするべく作業を行っていますし、その後、 CYMK 変換の関数も加える予定です。