【发布时间】:2016-03-08 07:04:10
【问题描述】:
我编写了一个 java 代码将黑白图像的所有红色值更改为 255,因此输出将是红色图像。 但它不是红色,而是输出更亮的图像。 我做错了什么?
File bwgFile = new File("X:/Java/Documents/NetBeansProjects/colour/input/bwg.png");
BufferedImage bwgImage = ImageIO.read(bwgFile);
int width=bwgImage.getWidth();
int height=bwgImage.getHeight();
for(int w=0; w<width; w++){
for(int h=0; h<height; h++){
int pixel = bwgImage.getRGB(w,h);
Color bwg = new Color(pixel);
int c=bwg.getRed();
Color red = new Color(255,c,c);
int cpixel = red.getRGB();
bwgImage.setRGB(w,h,cpixel);
}
}
ImageIO.write(bwgImage, "png", new File("X:/Java/Documents/NetBeansProjects/colour/output/c.png"));
编辑: 我发现了问题所在,显然,当输入是灰度图像时,它会尝试使输出也成为灰度图像,从而在去除蓝色和绿色时使其更暗,在添加红色时使其更亮。不使用灰度图像作为输入修复了它。
【问题讨论】:
-
原因颜色通道表示颜色的亮度?你仍然有你的绿色和蓝色通道。如果你都将它们设置为 255,你会得到白色。
-
我没有将它们全部设置为 255,只有红色。
-
如果您查看输出图像,您会发现图像不是白色的。 (如果你没有注意到,我已经包含了图片的链接。)
标签: java colors rgb bufferedimage javax.imageio