首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建具有BITMASK透明度的BufferedImage?

如何创建具有BITMASK透明度的BufferedImage?
EN

Stack Overflow用户
提问于 2014-11-30 19:34:52
回答 2查看 1.5K关注 0票数 0

BufferedImage类实现透明,它有三个值:

不透明的意味着没有透明度。

半透明意味着每个像素的阿尔法值介于0到1之间。

BITMASK表示每个像素要么是不透明的,要么是完全透明的。

我可以使用getTransparency()方法检查这个值。在我的例子中,我有一个具有透明度的PNG文件:

代码语言:javascript
复制
pic = ImageIO.read(new File(filename));
int transparency = pic.getTransparency(); // returns Transparency.TRANSLUCENT

现在我看到用Transparency.BITMASK绘制的图像比用Transparency.TRANSLUCENT绘制的要快得多,在我的例子中,BITMASK就足够了。我只需在一个特定的颜色中的所有透明像素,然后保存没有透明度的png。

问题:如何通过将一种颜色定义为透明来从现有的BufferedImage创建具有Transparency.BITMASK的BufferedImage对象?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-30 20:46:01

你的意思是像..。

代码语言:javascript
复制
// Create the buffered image
GraphicsDevice gs = ge.getDefaultScreenDevice();
GraphicsConfiguration gc = gs.getDefaultConfiguration();

BufferedImage bimage = gc.createCompatibleImage(width, height, Transparency.BITMASK);

要注意的事情:

  • 如果您所在的PNG包含>0和< 255的alpha值,它们可能被舍入为0或1,可能会使PNG看起来像锯齿状的.
  • 如果使用Transparency.TRANSLUCENT,则BufferedImage的颜色模式将与GraphicsDevice兼容,从而使呈现速度更快。

几年前,我制作了一个动画序列,它由5幅不同的图片组成,彼此层叠,在透明的window...When上以不同的速度回放--我第一次试着运行它,回放很糟糕,在这个地方跳来跳去。

在玩了一段时间后,我发现使用Transparency.TRANSLUCENT将图像转换成兼容的GraphicsDevice颜色模型就像一种魅力……

票数 2
EN

Stack Overflow用户

发布于 2014-12-02 18:14:44

接受的答案没有什么问题,只是提供了一个完整的替代方案(我认为它将在无头模式下工作)。:-)

BufferedImage的透明度由其ColorModel控制。

因此,要使用给定的BufferedImage常量创建Transparency,可以使用如下代码:

代码语言:javascript
复制
// Use default RGB color space, no discrete alpha channel, 
ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_sRGB);
ColorModel colorModel = new ComponentColorModel(cs, true, false, Transparency.BITMASK, DataBuffer.TYPE_BYTE);

WritableRaster raster = Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE, w, h, 4, null);

BufferedImage image = new BufferedImage(colorModel, raster, colorModel.isAlphaPremultiplied(), null);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27217319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档