我将使用BufferedImage的getRGB方法。我想检查图像的像素并确定哪些像素具有透明度(通常,我的透明像素将是完全透明的)。如何从getRGB返回的int中获取它?
BufferedImage img = ....
public boolean isTransparent( int x, int y ) {
int pixel = img.getRGB(x,y);
if( (pixel>>24) == 0x00 ) {
return true;
}
return false;
}
当然,img必须采用正确的格式TYPE_4BYTE_ABGR或其他支持alpha通道的格式,否则它将始终是不透明的(即0xff)。
正确获取int中alpha值的方法是使用 >>>,因为需要考虑符号位。
例如: int alpha1 = (pixel1 & 0xff000000) >>> 24;
int transparency = ((img.getRGB(x,y) & 0xff000000) >> 24);
第一个字节是 alpha 值。 - Chad