【问题标题】:Java BufferedImage how to know if a pixel is transparentJava BufferedImage如何知道一个像素是否透明
【发布时间】:2012-02-17 04:36:11
【问题描述】:

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

【问题讨论】:

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

标签: java transparency bufferedimage


【解决方案1】:
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)。

【讨论】:

  • 非常简单易用!谢谢!
【解决方案2】:

由于符号位,在 int 中获取 alpha 值的正确移位是 >>>。

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

【讨论】:

    猜你喜欢
    • 2014-03-30
    • 2011-08-06
    • 1970-01-01
    • 1970-01-01
    • 2021-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多