[英]Value won't change with ImageIO.write() in Java
我正在嘗試更改圖像一個像素的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
在具有getRGB()的BufferedImage類中,將在默認RGB顏色模型(TYPE_INT_ARGB)和默認sRGB顏色空間中返回一個整數像素。
TYPE_INT_ARGB是公共靜態后綴。它表示將8位RGBA顏色分量打包為整數像素的圖像。 該圖像具有帶alpha的DirectColorModel。 該圖像中的顏色數據被認為未與alpha預乘。
當將此類型用作BufferedImage構造函數的imageType參數時,創建的圖像與JDK1.1和早期版本中創建的圖像一致。
因此每次返回255。
讓我們知道您是否有任何疑問。
謝謝並恭祝安康,
哈迪克·奈
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.