gpt4 book ai didi

java - 在带有 alpha channel 的 PNG 上叠加透明颜色

转载 作者:搜寻专家 更新时间:2023-11-01 02:13:07 26 4
gpt4 key购买 nike

我正在寻找一种方法来在 Java 中绘制灰度颜色的 PNG 图像(带有 alpha channel ),然后覆盖透明颜色,比如 75% 不透明度的绿色,在它上面改变颜色. 明确地说,生成的图像将是在其上放置透明颜色的直接结果,而不是任何特殊类型混合的结果。

例如,我会画下图:

然后在图像顶部叠加 RGB 颜色(102、255、0、alpha):

在图像上绘制颜色的方法需要不会干扰屏幕上的其他图像。这类似于 Adob​​e Photoshop 的颜色叠加功能。两个图像可以有单独的颜色叠加,但单独的叠加不会相互冲突。

感谢 leonbloy,我相信使用“SRC_OVER”的 AlphaComposit 可以解决这个问题,然后我可以使用一种方法将结果保存为新的 BufferedImage,这将防止叠加层影响屏幕上的任何其他图像对象。

我会在测试时发布结果。

最佳答案

我能够使用 AlphaComposite、Graphics2D 和 BufferedImage 获得所需的效果。

@Override
public void paintComponent(Graphics g) {
BufferedImage result = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Graphics2D gbi = result.createGraphics();
BufferedImage x = null;
try {
x = ImageIO.read(getClass().getResource("/resources/someimage.png"));
} catch (IOException ex) {
Logger.getLogger(CanvasPanel.class.getName()).log(Level.SEVERE, null, ex);
}
gbi.drawImage(x, 0, 0, this);
gbi.setColor(selectedColor);
gbi.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 0.75f));
gbi.fillRect(0, 0, width, height);
g.drawImage(result, 0, 0, this);
}

关于java - 在带有 alpha channel 的 PNG 上叠加透明颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13425797/

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