我有一张通过网络摄像头拍摄的我的猫的照片(主题可能不重要)。我已将其作为 31 kB JPG 文件获取。当我使用图像编辑器打开它,然后将其保存(不做任何更改)为 PNG(最大压缩)时,它存储为 297 kB 文件。
为什么 PNG 文件比原始 JPG 文件大 10 倍。据我了解,打开 JPG 是无损的,保存 PNG 是无损的。那么,所有额外数据从何而来?如果图像完全来自小文件,为什么它会重新保存到光盘上大小的 10 倍?
请仔细阅读。我不是在问为什么这两种格式从原始图像产生不同的文件大小。我在问为什么打开现有的 JPG 然后保存与 PNG 完全相同的图像要大 10 倍。据我所知,我不认为这是一个重复的问题。
我做过的一些测试:-
- 我查看了 JPG 和 PNG,它们看起来一模一样。
- 我压缩了这两个文件,cat.jpg.zip 为 31 kB,cat.png.zip 为 296 kB。我认为这意味着两个文件都已完全压缩,几乎没有潜在的冗余。
- 我也尝试过使用 BMP 格式; cat.jpg (31 kB) -> cat.bmp (922 kB) -> cat.bmp.zip (404 kB)。
关于神秘的额外数据有什么想法......?
最佳答案
JPEG 本质上比 PNG 产生更好的压缩。但是,JPEG 牺牲了对原始图像的保真度以获得更好的压缩。 PNG 完全复制原件。
如果您从 JPEG 转换为 PNG,您不会看到任何变化。 如果您从 PNG 转到 JPEG,您可能会看到很多变化。
JPEG 使用一系列压缩技术。其中之一,DCT,变换图像。这会在颜色上产生微妙的波纹。例如,如果您从全是一种颜色的纯红色 block 开始,JPEG 会产生很多细微的颜色变化。
PNG 压缩依赖于在扫描线中寻找重复的像素模式。 JPEG 引入的细微颜色变化会使 PNG 压缩效率降低。
您提到的额外数据只是两种格式表示同一图像的不同之处。
如果我从相机拍摄 JPEG 图像并将其转换为 PNG,结果通常会大 10 倍左右。 对于转为 JPEG 的 PNG 图形图像,我通常会得到大约小 1/3 的文件。
关于png - 为什么从 JPG 中对图像进行 PNG 处理会使它放大 10 倍?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29056371/