JavaでImageコピー

JavaでImageコピーをしたい場合に、ピクセル単位で何か処理をしたい時があります。そのような時は次のようにデータを取り出して処理をするとよいでしょう。


imageにはImageIO.readなどで画像データを読み込んでいるとして、destImageが参照するint[]へピクセル情報をコピーしています。

int width  = image.getWidth();
int height = image.getHeight();
int size = width * height;
BufferedImage destImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
int[] dest = ((DataBufferInt)(destImage.getRaster().getDataBuffer())).getData();
byte[] src = ((DataBufferByte)(image.getRaster().getDataBuffer())).getData();
int r, g, b, a;
for(int i=0, j=0;i<size;i++) {
  a = src[j++] & 0xFF;
  r = src[j++] & 0xFF;
  g = src[j++] & 0xFF;
  b = src[j++] & 0xFF;
  dest[i] = (a<<24)|(r<<16)|(g<<8)|b;
}
同じタグの記事: Java
同じカテゴリの記事: Java
関連書籍: Java