我有一个透明的png图像。我正在尝试在透明区域上的图像上创建一个填充的多边形。我正在设置颜色,但是最终图像中的实际颜色与预期的不同。这是我的代码:
Graphics2D g = wifiImage.createGraphics();
int [] x = {0, 200, 0};
int [] y = {0, 0, 200};
g.setColor(new Color(255, 0, 0)); //Red color
g.drawPolygon(x, y, 3);
g.fillPolygon(x, y, 3);
g.dispose();
ImageIO.write(wifiImage, "png", new File("./output/finalImage.png"));
在最后的图像中,我期望红色三角形。但是它是一些褐色。
作为一种解决方法,我在origImage中用白色替换了透明度。在这种情况下,它可以工作。
有人能告诉我如何在png的透明区域设置正确的颜色吗?
答案 0 :(得分:0)
PNG图像可能是调色板图像,其中“褐色”是最接近(255,0,0)的调色板颜色。
尝试一下:
BufferedImage copy = new BufferedImage(wifiImage.getWidth(), wifiImage.getHeight(), BufferedImage.TYPE_INT_ARGB);
g = copy.createGraphics();
copy.drawImage(wifiImage, 0, 0, null);
int [] x = {0, 200, 0};
int [] y = {0, 0, 200};
g.setColor(new Color(255, 0, 0)); //Red color
g.drawPolygon(x, y, 3);
g.fillPolygon(x, y, 3);
g.dispose();
ImageIO.write(copy, "png", new File("./output/finalImage.png"));