【发布时间】:2013-02-07 00:33:21
【问题描述】:
我有一个关于 JPEG 文件写入的问题。假设我有一个 PNG 文件 example.png,我想将文件格式更改为 JPEG,而不会丢失任何信息。目前,我有两个解决方案:
-
方案一:用MATLAB进行文件格式转换
I = imread('example.png');
imwrite(I,'example.jpg','Mode','lossless');
II = imread('example.jpg');
不同 = I-II;
最大(不同(:))
此解决方案可以生成无损 JPEG 文件。然而,这个解决方案的问题在于 原始图像中的某些信息(例如 DPI 分辨率)可能会丢失。此外, 生成的输出图像不能被 IrfanView 和 Windows 等流行的图像查看器查看 油漆。
解决方案 2:使用 IrfanView 软件。 使用 IrfanView 程序的“另存为”功能,我们可以非常轻松地更改文件格式。但是,虽然我在保存 JPEG 文件时设置了“最佳质量 100”选项,但输出图像也显示出一些信息丢失。对于所有像素,这两个图像之间的差异并非为零。
因此,我想知道我应该怎么做才能解决这个问题。任何想法将不胜感激。
【问题讨论】:
-
解决您的问题很容易:保留PNG图像。
-
Jpeg2000 是一种无损 jpeg 文件格式,但遗憾的是几乎没有软件支持 jpeg2000。 .png 和 .gif 是无损文件的最佳选择。
-
您的第一个假设需要改变。 “正常”JPEG 图像使用有损压缩格式。正如@mmgp 所说,留在PNG 是一个不错的选择。如果您正在寻找更好的压缩比,那么您将需要放弃无损的想法。
标签: image image-processing jpeg lossless-compression