当前位置: 首页 > 面试题库 >

如何在具有透明度的java BufferedImage中读取像素颜色

魏臻
2023-03-14
问题内容

我正在读取BufferedImage中的像素颜色,如下所示:

.....
InputStream is = new BufferedInputStream(conn.getInputStream());
BufferedImage image = ImageIO.read(is);

int color = image.getRGB(x, y);

int  red = (colour & 0x00ff0000) >> 16;
int  green = (colour & 0x0000ff00) >> 8;
int  blue = colour & 0x000000ff;

现在,除了具有透明性的png之外,此方法都可以正常工作。我发现如果x,y指的是没有颜色的透明像素,我仍会读取一种颜色,通常与图像中其他位置使用的颜色相同。

如何检测像素实际上是透明的而不是彩色的?

谢谢


问题答案:
int alpha = (colour>>24) & 0xff;

结果也是一个介于0(完全透明)到255(完全不透明)之间的值。



 类似资料:
  • 基本上我的问题分为两部分。 > 我想知道将要操纵像素并将特定颜色转换为透明像素的首选/快速方法。 我想知道我是否能够使用这个“BuffereImage”,而不必将其保存为支持“png”等透明度的文件格式 我找到了一种设置单个像素的方法 这儿呢 正如它所提到的,这是一种“缓慢的方法” 我发现这个线程Java:用透明像素填充BufferedImage 哪一条评论提到了“int[]”和操纵像素。 本质上

  • 问题内容: 但是我需要一个Java等效项。我需要一个图像类型(如,,…),该图像类型可以完全透明(alpha = 0)保留此颜色。当然还有一种将其保存为文件的方法。 问题答案: import java.awt.; import java.awt.image. ; 修改代码以使每个像素透明 来源:http://www.rgagnon.com/javadetails/java-0265.html

  • 我试图从眼动跟踪结果创建一个热图(显示用户在屏幕上最频繁查看的位置)。 对于用户经常查看的像素,我想设置不透明的红色,对于不太频繁的橙色,等等...我使用红色到绿色的色阶。但是对于频率最低的像素,我希望它们不仅显示绿色,而且是透明的。 问题是,当我尝试改变颜色时,例如使用它实际上并没有根据新旧颜色将像素作为平均值着色,它只是显示一些新的、看起来奇怪的颜色。 图像与alpha RGBA值设置为50:

  • 问题内容: 我有一个不透明度为0.8 的 容器 。在背景上,我的图像通过内容div发光。现在,我在此 容器中 有我的客户的照片。问题在于,它使用父元素的不透明度,因为此图像的不透明度只是相对于容器而不是相对于主体。 我有以下代码: 如下所述,这不起作用。 有人知道吗? 问题答案: 通过将其更改为以下内容解决了此问题: 仅使用rgba alpha而不是不透明度。现在可以了。

  • 问题内容: 我想为父级应用不透明度,但是我不希望子元素继承这种不透明度。 有没有办法“取消”继承的不透明度?也许将其强制用于子元素? 问题答案: 如果孩子的不透明度为1,则孩子的不透明度将始终是父对象的不透明度。 继承不是问题,而是不透明度的计算方式。 例如, 从您的角度来看,的不透明度与的不透明度相同,但实际上是的不透明度的两倍。 避免这种情况的唯一方法是将孩子移出父母。另外,根据您的需要,也可

  • 在Canvas绘图时,可以通过绘制上下文的strokeStyle属性和fillStyle属性来设置图形的描边颜色和填充颜色。默认颜色为不透明的黑色。 strokeStyle属性和fillStyle属性可以被设置为任意有效的CSS颜色字符串,可以使用颜色名称、十六进制RGB颜色、RGB、RGBA、HSL、HSLA颜色中的任意一种。 在使用RGBA或HSLA颜色时,可以通过设置其透明度(alpha)来