为什么从 JPG 对图像进行 PNG 处理会使其放大 10 倍



我有一张通过网络摄像头拍摄的猫的图像(主题可能并不重要)。 我已将其作为 31 kB JPG 文件获取。 当我使用图像编辑器打开它时,然后将其保存(无需更改)为 PNG(最大压缩),它存储为 297 kB 文件。

为什么 PNG 文件比原始 JPG 大 10 倍。 据我了解,打开 JPG 是无损的,保存 PNG 是无损的。 那么,所有额外的数据从何而来? 如果图像完全来自小文件,为什么它会重新保存到光盘大小的 10 倍?

请仔细阅读。 我不是在问为什么这两种格式产生与原始图像不同的文件大小。 我问为什么打开现有的 JPG 然后将完全相同的图像保存为 PNG 大 10 倍。 据我所知,我不认为这是一个重复的问题。

我做过的一些测试:-

  1. 我看过JPG和PNG,它们看起来是一样的。
  2. 我已经压缩了两个文件,得到 cat.jpg.zip 为 31 kB,cat.png.zip为 296 kB。我认为这意味着两个文件都是完全压缩的,几乎没有潜在的冗余。
  3. 我也通过BMP格式尝试过; cat.jpg (31 kB) -> cat.bmp (922 kB) -> cat.bmp.zip (404 kB)。

关于神秘的额外数据的任何想法..?

JPEG 本质上比 PNG 产生更好的压缩。但是,JPEG 会牺牲对原始图像的保真度以获得更好的压缩效果。PNG 完全复制了原始内容。

如果你从JPEG转到PNG,你不会看到变化。如果你从PNG转到JPEG,你可能会看到很多变化。

JPEG使用了一系列压缩技术。其中之一,DCT,转换图像。这会产生微妙的颜色波纹。例如,如果从一个全部为一种颜色的纯红色块开始,则 JPEG 会产生许多轻微的颜色变化。

PNG 压缩依赖于在扫描线中查找重复的像素图案。JPEG 引入的细微颜色变化会使 PNG 压缩效果降低。

您引用的额外数据只是两种格式如何表示同一图像的差异。

如果我从相机拍摄 JPEG 图像并转换为 PNG,结果通常大约大 10 倍。对于 JPEG 的 PNG 图形图像,我通常会得到大约小 1/3 的文件。

JPG 使用有损压缩,而 PNG 使用无损压缩。当您将 JPG 转换为 PNG 时,实际发生的是从 JPG 解压缩并将结果保存在 PNG 中。

"额外数据"实际上是由于使用了不同的算法。

至于为什么压缩文件也有不同的大小,那是因为PNG必须保存所有像素(包括那些JPG有损压缩的像素)无损失。

最新更新