gpt4 book ai didi

java - 如何使用 BITMASK 透明度创建 BufferedImage?

转载 作者:行者123 更新时间:2023-12-01 22:33:32 25 4
gpt4 key购买 nike

BufferedImage 类实现 Transparency,它具有三个值:

OPAQUE表示不透明。

TRANSLUCENT 表示每个像素的 Alpha 值都在 0 到 1 之间。

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

我可以使用 getTransparency() 方法检查该值。就我而言,我有一个具有透明度的 PNG 文件:

pic = ImageIO.read(new File(filename));
int transparency = pic.getTransparency(); // returns Transparency.TRANSLUCENT

现在我读到使用 Transparency.BITMASK 的图像绘制速度比使用 Transparency.TRANSLUCENT 的图像快得多,就我而言,BITMASK 就足够了。我只是将所有透明像素着色为一种特定颜色,然后保存不透明的 png。

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

最佳答案

你的意思是......

// Create the buffered image
GraphicsDevice gs = ge.getDefaultScreenDevice();
GraphicsConfiguration gc = gs.getDefaultConfiguration();

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

注意事项:

  • 如果您的 PNG 包含 alpha 值 > 0 且 < 255,它们可能会舍入为 0 或 1,可能会使 PNG 出现锯齿状...
  • 如果您改用 Transparency.TRANSLUCENTBufferedImage 的颜色模式将与 GraphicsDevice 兼容,从而加快渲染速度

几年前,我制作了一个动画序列,它由 5 个独立的图像组成,彼此层叠,并在透明窗口顶部以不同的速度播放......当我第一次尝试运行它时,播放很糟糕,到处跳来跳去。

经过一番尝试,我发现使用 Transparency.TRANSLUCENT 将图像转换为 GraphicsDevice 的兼容颜色模型非常有效......

关于java - 如何使用 BITMASK 透明度创建 BufferedImage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27217319/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com