我有一个网络图库,我在其中显示用户上传的文件大小和分辨率不同的图像。目前所有图像都是基线。所以我想知道如果我将它们转换为渐进式图像是否会产生任何重大影响。使用渐进式图像有哪些优点和权衡。
答案 0 :(得分:5)
JPEG标准定义了各种压缩模式。其中只有三种被广泛使用:
第一个的唯一区别在于允许的表数。否则,它们将以完全相同的方式进行编码和解码。
JPEG将图像划分为帧,然后将帧划分为扫描。上述模式仅允许一帧。框架是图像。扫描通过图像数据。扫描可以包含一个颜色分量的数据,也可以是交错的,并包含多个颜色分量的数据。
JPEG采用8x8像素数据块,并将离散余弦变换应用于该数据。 64像素数据变为64个DCT系数。第一个DCT系数称为“DC”系数,其他63个称为“AC”系数。
这是令人困惑的术语,它与DC和AC电流类比。 DC系数类似于块的平均像素值。
在顺序JPEG中,块中的64个系数被一起编码(DC和AC系数编码不同)。在Progressive 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 :(得分:0)
唯一的区别是渐进式图像的编码方式允许浏览器在图像仍然被下载时显示图像的粗略预览,从而逐渐质量更好,直到最后下载完成了。基线图像将从上到下加载,渐进式图像将从低分辨率加载到高分辨率。
对于不支持渐进式图像的浏览器,在加载整个图像之前,您将看不到任何内容。 (现在所有现代浏览器都支持渐进式JPEG。)
您可以看到动作差异的动画,例如在这里:https://www.youtube.com/watch?v=TOc15-2apY0