当图像从jpg转换为png时,图像是否会失去质量?

时间:2016-07-24 16:25:04

标签: png jpeg

我们都知道,从jpg转换为jpg会使图像质量下降,并且当png到png时也不会发生这种情况,但jpg到png会怎么样?

在我看来它没有意义,但我仍然不确定。

我认为这个问题的好答案可能是一篇文章,其中会有一个很好的解释为什么它发生。你现在有吗?我找不到这样的文章。

2 个答案:

答案 0 :(得分:6)

它没有,但它很复杂。

读取JPEG不是一个精确定义的过程。允许不同的JPEG解码器从同一文件产生略微不同的结果。

将JPEG转换为PNG使像素永远代表用于解码JPEG的特定方法,即使它不是最佳的。如果你使用“坏”JPEG解码器进行转换,你将失去使用“更好”的JPEG解码器的能力。

区别在于:

  • 色度上采样。 JPEG可以以低于图像的亮度(〜亮度)的分辨率存储色度(〜颜色)。该规范没有说明色度通道应该如何调整大小,因此一些解码器使用块状最近邻居缩放,一些使用双线性缩放,有些甚至更奇怪。

  • 数字精度。 JPEG要求进行计算以将图像从DCT和YCbCr表示转换为RGB。这可以使用整数数学和8位颜色快速而廉价地完成,或使用浮点数学和更高深度的颜色更好一点。

  • 颜色配置文件和CMYK。转换可能会改变颜色空间(如果是CMYK,它必须转换为RGB),这很容易出错。

还有其他原因可以避免转换:

  • 该文件几乎肯定会变得更大。对于PNG,JPEG压缩伪像是最坏的情况。
  • 文件将丢失元数据(如相机信息,GPS)。虽然理论上PNG可以携带相同的元数据,但实际上转换器很少保留它。

用于转换的案例jpeg2png project,它不仅仅转换文件,而且还使用非常先进的后处理来平滑JPEG压缩失真。在这种情况下,您可以挽救低质量的块状JPEG并获得更平滑的图像。

答案 1 :(得分:1)

您描述的过程是:

  1. JPEG Stream => JPEG DECODER => BITMAP
  2. => PNG ENCODER => PNG Stream
  3. 第2步没有变化。步骤#1可能存在JPEG固有的舍入错误。