我有一個圖像,稱之爲grayscale.jpg。現在我在The Gimp中打開該圖像並將顏色模式更改爲RGB並將其另存爲color.jpg。如果我在任何圖像查看器中查看grayscale.jpg和color.jpg,它們看起來完全一樣。但是,如果我打開圖像與javax.imageio.ImageIO
javax.imageio.ImageIO在灰度圖像上讀取不正確的RGB值
import javax.imageio.ImageIO;
input = ImageIO.read(new File("grayscale.jpg"));
System.out.format("Grayscale value: %x\n", input.getRGB(200, 200));
input = ImageIO.read(new File("color.jpg"));
System.out.format("Color value: %x\n", input.getRGB(200, 200));
的彩色圖像將返回正確的值,說0xff6c6c6c。灰度圖像將返回像0xffaeaeae不同,更輕,不正確的值。
Grayscale value: 0xffaeaeae // Incorrect (Lighter)
Color value: 0xff6c6c6c // Correct
換句話說,javax.imageio.ImageIO中認爲灰度圖像輕得多比實際。我怎樣才能準確讀取灰度圖像?
編輯
這裏有更多的上下文。我的用戶上傳圖片,可能是灰度。我的Java運行在服務器上並執行一些非常複雜的圖像處理。所以一個理想的解決方案是修復我的Java代碼,而不是用命令行工具來組合一些東西。
更多的挖掘之後,這是 重複http://stackoverflow.com/questions/6474753/my-batch-jpg-resizer -works-with-color-images-but-grayscale-ones-become-washed-o – 2011-12-20 18:42:48