我正在尝试更改图像的一个像素的rgb值,然后将其写回到一个新文件中,但是当我读取之前已更改其值的文件时,我遇到了问题,它仍然具有旧值
这是我的代码:
BufferedImage image = ImageIO.read(new File("input.jpg"));
System.out.println(image.getRGB(0, 0) & 0xff);
image.setRGB(0, 0, -2);
System.out.println(image.getRGB(0, 0) & 0xff);
ImageIO.write(image, "jpg", new File("output.jpg"));
BufferedImage output = ImageIO.read(new File("output.jpg"));
System.out.println(output.getRGB(0, 0) & 0xff);
我的代码的输出是:
255
254
255
当我更改rgb值时应该是什么:
255
254
254
答案 0 :(得分:0)
在具有getRGB()的BufferedImage类中,返回默认RGB颜色模型(TYPE_INT_ARGB)和默认sRGB颜色空间中的整数像素。
TYPE_INT_ARGB是public static final in。它表示将8位RGBA颜色分量打包为整数像素的图像。该图像具有带alpha的DirectColorModel。此图像中的颜色数据被视为不与alpha预乘。
当此类型用作BufferedImage构造函数的imageType参数时,创建的图像与在JDK1.1及更早版本中创建的图像一致。
所以它每次都会返回255。
如果您有任何疑问,请告诉我们。
谢谢和问候,
Hardik Nai