ImageクラスのpixelはPixelGrabberクラスを用いることで取得できる。
しかし、そのままではただ単に配列[画像の縦ピクセル(y:HEIGHT)*画像の横ピクセル(x:WIDTH)]にRGBの値を格納したに過ぎない。
そこで、その配列をRGBデータをR,G,Bに分解し、data[0]にRのデータ、data[1]にGのデータ、data[2]にBのデータを格納したのが
以下の例となる。
つまり、
- pix[画像の横ピクセル*画像の縦ピクセル]
- 画像のピクセルに順番に番号をつけデータを格納した状態。
- RGBのデータを持つ。従って、カラークラスから情報を入れるにはgetRGB()を使う。
- data[0][y][x],data[1][y][x],data[2][y][x]
- data[0],data[1],data[2]にそれぞれR,G,Bのデータを格納し、且つ[画像の縦ピクセル][画像の横ピクセル]の形に分かれた状態。
- それぞれ、R,G,Bに分離したデータを持つ。従って、カラークラスから情報を入れるにはgetRed(),getGreen(),getBlue()を使う。
ところで、RGBのデータだが、
ビットのうち 24 ~ 31 はアルファ、16 ~ 23 は赤(R)、8 ~ 15 は緑(G)、0 ~ 7 は青(B)を表している。
そのため、次のようにすることでアルファ、赤、緑、青の値に分離することができる。
pixelにはRGBのデータ。
/*alphaの場合だと24ビット分の値をずらし、仮の値が(1001 1101) 1011 1111 1111 1111 1111 1111
*であったとするならば、()で囲った部分と0xff(1111 1111)とで
*ANDを取ることによりalphaの値(この場合:1001 1101)を得る。
*/
int alpha = (pixel >> 24) & 0xff;
int red = (pixel >> 16) & 0xff;
int green = (pixel >> 8) & 0xff;
int blue = (pixel ) & 0xff;
最終更新:2011年04月02日 13:43