【发布时间】:2018-01-15 22:04:55
【问题描述】:
将图像存储为 JPG 不会保留像素的 RGB 值; PNG 也不起作用。
这是我的问题,我写了一个这样的java程序:
BufferedImage img=ImageIO.read(new File("Pathtoimage"));
//changed the pixel values using getRGB() and setRGB()
ImageIO.write(img,"png","pathToTarget");
然后我写了其他代码来读取像素值,我发现它们是不同的。
如果我不存储图像,一切似乎都很好。但我确实需要以像素完美保留其设置的 RGB 值的方式存储图像。请建议其他文件格式(PNG 和 JPG 不适用)或解决方法。
【问题讨论】:
-
如果您希望能够完全按原样恢复数据,请不要使用 PNG 和 JPG 都具有的有损压缩算法。跨度>
-
PNG 是无损的,尽管它可以选择支持有损压缩以减小文件大小。您是否进行过任何研究,例如搜索“无损图像格式”?
-
@SouritChakraborty 你用什么代码来测试 RGB 值是否相等?请注意,
BufferedImage.getRGB()/setRGB()总是对 sRGB 颜色空间中的颜色进行操作。如果您的 PNG 文件使用不同的颜色空间,或在使用不同颜色空间的应用程序中进行测试,则这些值将与您设置的不完全相同。
标签: java bufferedimage javax.imageio argb