我正在尝试自动更改一组图标的颜色。每个图标都有一个白色填充层,另一部分是透明的。这是一个例子:(在这种情况下它是绿色的,只是为了让它可见)
我尝试执行以下操作:
private static BufferedImage colorImage(BufferedImage image) {
int width = image.getWidth();
int height = image.getHeight();
for (int xx = 0; xx < width; xx++) {
for (int yy = 0; yy < height; yy++) {
Color originalColor = new Color(image.getRGB(xx, yy));
System.out.println(xx + "|" + yy + " color: " + originalColor.toString() + "alpha: "
+ originalColor.getAlpha());
if (originalColor.equals(Color.WHITE) && originalColor.getAlpha() == 255) {
image.setRGB(xx, yy, Color.BLUE.getRGB());
}
}
}
return image;
}
我遇到的问题是我得到的每个像素都具有相同的值:
32|18 color: java.awt.Color[r=255,g=255,b=255]alpha: 255
所以我的结果只是一个彩色方块。如何实现仅更改非透明部分的颜色?为什么所有像素都具有相同的 alpha 值?我想这是我的主要问题:没有正确读取 alpha 值。