簡體   English   中英

Java中的ImageIO.write()值不會改變

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM