如何将BufferedImage中的像素设置为透明

时间:2014-08-14 15:23:57

标签: java bufferedimage

我正在制作游戏,我需要设置一些BufferedImage的像素(使用ImageIO.read加载)以最快,最好的方式透明。

我真的找不到这个问题的任何其他主题,如果我做的答案不能真正帮助/适合我需要的东西。

谢谢:)

3 个答案:

答案 0 :(得分:2)

Color(red, green, blue, alpha)用于值0-255。其中alpha是不透明度。

具有Alpha通道(RGBA,BGRA)类型的抛光图像

Color halfTransparant = new Color(0x76, 0x54, 0x32, 128);

对于阵列上的setRGB,这仍然不快,您可以访问栅格数据。 但为什么在时间紧迫的情况下使用动态生成的图像。

答案 1 :(得分:0)

智能方法是从一开始就使用正确的alpha创建图像(使用具有透明度的图像格式,例如PNG和您最喜欢的成像应用程序,例如GIMP)。

否则,您可以使用BufferedImage API直接更改ImageIO返回的BufferedImage中的像素:setRGB(int ARGB)及其在BufferedImage光栅中的批量操作表兄弟。

答案 2 :(得分:0)

应该适用于所有图像类型(只要它们支持alpha)的一种方法非常快,并且不会禁用图像的硬件加速:

BufferedImage image = ...; // From somewhere

Graphics2D g = destination.createGraphics();
try {
    g.setComposite(AlphaComposite.Clear);
    g.fillRect(x, y, w, h); // Area to make transparent
}
finally {
    g.dispose();
}