2016-12-02 82 views
0

我有一个网络画廊,我显示的图片在用户上传的文件大小和分辨率上有所不同。目前所有的图像都是基线。所以我想知道,如果我将它们转换为渐进式图像,是否会产生重大影响。使用渐进式图像有什么优势和折衷。Progressive jpeg vs baseline jpegs

回答

4

JPEG标准定义了各种压缩模式。只有这三个被广泛使用:

  • 基线顺序
  • 扩展顺序
  • 进步

第一唯一的差别是在表的数量允许的。否则,它们将以完全相同的方式进行编码和解码。

JPEG将图像分成帧,然后分割成扫描。上述模式只允许一帧。该框架是图像。扫描通过图像数据。扫描可以包含一个颜色分量的数据,也可以交织并包含多个颜色分量的数据。

  • 灰度连续JPEG流将有一个扫描。
  • 彩色顺序JPEG流可能有一个或三个扫描。

JPEG需要8x8像素数据块并将离散余弦变换应用于该数据。 64个像素数据变成64个DCT系数。第一个DCT系数称为“DC”系数,其他63个称为“AC”系数。

这是令人困惑的术语,类比与直流和交流电流。 DC系数类似于块的平均像素值。

在顺序JPEG中,块中的64个系数一起编码(DC和AC系数编码不同)。在逐行JPEG中,DC和AC系数扫描编码系数内的位域(可配置大小)。从理论上讲,您可以为每个组件的每个位单独扫描一次。

渐进式JPEG的实现和使用要复杂得多。如果您正在为顺序JPEG创建编码器,则只需让主叫方选择使用交错扫描或非交错扫描。对于渐进式JPEG,编码器需要一种机制让调用者确定每次扫描中应扫描多少次扫描和哪些位。

渐进式编码可能比顺序慢,因为您必须对数据进行多次传递。

逐行解码中的速度问题取决于它是如何完成的。如果您一次解码整个图像,渐进式可能比顺序稍慢。如果您的解码器在处理流时显示图像淡入,它将比顺序慢得多。每次更新显示时,都必须进行逆DCT,上采样和颜色转换。

另一方面,使用渐进式JPEG和良好调谐的扫描可以获得更好的压缩效果。

有渐进性和顺序

这本书之间在质量上没有差别描述的过程:

https://www.amazon.com/Compressed-Image-File-Formats-JPEG/dp/0201604434/ref=asap_bc?ie=UTF8

+1

比你曾经想知道的JPEG更多... ;-) +1 – deceze

+0

哇..很多发夹的东西的jpeg。 :) – Ayan

0

唯一的区别在于,渐进式图像的编码方式允许浏览器在图像仍在下载时显示图像的粗略预览,直到最终下载完成后,图像质量会更好。基线图像将自上而下加载,逐行图像将从低分辨率加载到高分辨率。

对于不支持逐行图像的浏览器,只有在加载完整图像后才能看到任何内容。 (现在所有中途现代浏览器都支持渐进式JPEG。)

您可以看到动作差异的动画,例如,这里:https://www.youtube.com/watch?v=TOc15-2apY0

+0

那么,有没有在速度方面有什么区别? – Ayan

+0

下载速度?这取决于图像的大小,这取决于你如何精确地压缩/保存图像。相同大小的文件可以在相同的时间下载。处理速度?很值得谈论。 – deceze

+0

因此,如果您要在图库中使用jpeg,您宁愿延迟加载基线jpeg或渐进式jpeg。 – Ayan