【发布时间】:2016-12-02 09:11:34
【问题描述】:
我有一个网络画廊,我在其中显示用户上传的文件大小和分辨率各不相同的图像。目前所有图像都是基线。所以我想知道如果我将它们转换为渐进图像是否真的会产生重大影响。使用渐进式图像有哪些优势和权衡。
【问题讨论】:
标签: html css jpeg progressive
我有一个网络画廊,我在其中显示用户上传的文件大小和分辨率各不相同的图像。目前所有图像都是基线。所以我想知道如果我将它们转换为渐进图像是否真的会产生重大影响。使用渐进式图像有哪些优势和权衡。
【问题讨论】:
标签: html css jpeg progressive
JPEG 标准定义了多种压缩模式。其中只有三个被广泛使用:
第一个 to 的唯一区别是允许的表格数量。否则,它们的编码和解码方式完全相同。
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
【讨论】:
唯一的区别是渐进式图像的编码方式允许浏览器在图像仍在下载时显示图像的粗略预览,在最终下载之前,渐进式质量会更好完成了。基线图像将从上到下加载,渐进式图像将从低分辨率加载到高分辨率。
对于不支持渐进式图像的浏览器,在加载整个图像之前,您将看不到任何内容。 (现在所有中途的现代浏览器都支持渐进式 JPEG。)
您可以看到动作差异的动画,例如这里:https://www.youtube.com/watch?v=TOc15-2apY0
【讨论】: