Java BufferedImage 如何知道一个像素是否透明

8
我将使用BufferedImage的getRGB方法。我想检查图像的像素并确定哪些像素具有透明度(通常,我的透明像素将是完全透明的)。如何从getRGB返回的int中获取它?

2
int transparency = ((img.getRGB(x,y) & 0xff000000) >> 24); 第一个字节是 alpha 值。 - Chad
2个回答

20
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)。


非常简单易用!谢谢! - JFreeman

2

正确获取int中alpha值的方法是使用 >>>,因为需要考虑符号位。

例如: int alpha1 = (pixel1 & 0xff000000) >>> 24;


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接