金曜日, 12月 08, 2006

「なでしこ」で画像の色情報を取得する

画像というのは、ピクセル単位の色を2次元平面上にずらっと並べたものだ。例えば、横が320ピクセル、縦が240ピクセルのいわゆるQVGAの画像の場合は、320×240=76800ピクセル分の色が並んでいることになる。

下の画像は、この大きさの画像をIrfanViewで読み込んでみたところだ。IrfanViewでは、画像の任意の場所を右クリックすると、メニューバーのところにその場所のカラーコードが表示される。



上の例では、横位置(X)=91 縦位置(Y)=135 のカラーコードが、R=254 G=181 B=102、HTML形式の16進表示では、#FEB566 であることがわかる。

なでしこ」で、この色コードを取得する方法は、ピクセルの位置(X,Y)を指定して次のように書く。

画像色取得(X,Y)
http://nadesi.com/doc/cmd/doc.cgi?mode=cmd&id=2156

画像色取得命令で取得したカラーコードは10進表現になっているが、「なでしこ」では、この他に、16進表現($RRGGBB)と、RGB表現が可能だ。RGBで表す場合は、関数RGBを使って、RGB(R,G,B)のように書く。

RGB(R,G,B)
http://nadesi.com/doc/cmd/doc.cgi?mode=cmd&id=296

それでは、早速プログラムでこの「画像色取得」命令を使って、IrfanViewで表示されたのと同じカラーコードが取得できるかを試してみる。


//画像色取得

画像WKとはイメージ; 画像WKの画像="TEST.jpg"

X=91;Y=135;R=254;G=181;B=102;HTML=$FEB566 // IrfanViewの参照値

移動(0,300)

表示("RGB 形式 = "&RGB(R,G,B))
表示("HTML形式 = "&HTML)

表示("色取得は = "&画像色取得(画像WK,X,Y))

//ここまで


実行すると、下の画像のようになるはずだ。



画像色取得命令で取得したカラーコードが、IrfanViewに出ていたコードと同じ数値になることがわかる。