【发布时间】:2012-10-15 20:33:19
【问题描述】:
我一直在 javax.imageio.ImageIO 中使用 ImageIO.read() 和 ImageIO.write() 方法来读取和写入图像,我发现有些图像的颜色发生了奇怪的变化。
即使我将代码更改为只读取图像并写入它们(使用 jpeg、png、gif),所有这些新图像都有相同的问题。
我需要在 ImageIO.read/write 方法之前/之后添加任何其他代码吗?
这是我使用的代码:
File f = new File("obw.jpg");
BufferedImage bi = ImageIO.read(f);
FileOutputStream fos2 = new FileOutputStream("obw2.jpg");
ImageIO.write(bi, "JPG", fos2);
FileOutputStream fos3 = new FileOutputStream("obw3.gif");
ImageIO.write(bi, "GIF", fos3);
FileOutputStream fos4 = new FileOutputStream("obw4.png");
ImageIO.write(bi, "PNG", fos4);
我的环境:
java version "1.6.0_35"
MacOSX 10.8.2
原图:
读写后的一张图片:
【问题讨论】:
-
哪一个被改变了,还是全部改变了?原始图像是否可能损坏?
-
我阅读了原始图像并写了 jpeg、png、gif 图像,这三个图像都显示绿色 obiwan...有什么方法可以检查原始图像是否损坏?
-
lesto,我尝试使用光栅(使用 JPEGImageReader,而不是 Sanselan 库),但该代码给出了 ArrayOutOfBoundsException,这不是读取 CMYK 图像时发生的行为..
标签: java image image-processing