【问题标题】:Progressive jpeg vs baseline jpegs渐进式 jpeg 与基线 jpeg
【发布时间】:2016-12-02 09:11:34
【问题描述】:

我有一个网络画廊,我在其中显示用户上传的文件大小和分辨率各不相同的图像。目前所有图像都是基线。所以我想知道如果我将它们转换为渐进图像是否真的会产生重大影响。使用渐进式图像有哪些优势和权衡。

【问题讨论】:

    标签: html css jpeg progressive


    【解决方案1】:

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

    • 基线顺序
    • 扩展顺序
    • 渐进式

    第一个 to 的唯一区别是允许的表格数量。否则,它们的编码和解码方式完全相同。

    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

    【讨论】:

    • 比您想知道的更多关于 JPEG 的信息…… ;-) +1
    • 哇.. jpeg 的引擎盖下的东西很多。 :)
    【解决方案2】:

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

    对于不支持渐进式图像的浏览器,在加载整个图像之前,您将看不到任何内容。 (现在所有中途的现代浏览器都支持渐进式 JPEG。)

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

    【讨论】:

    • 那么在速度方面有什么区别吗?
    • 下载速度?这取决于图像的大小,这取决于您如何精确压缩/保存它。相同大小的文件在相同的时间内下载。处理速度?几乎不值得谈论。
    • 因此,如果您要在图库中使用 jpeg,您更喜欢延迟加载基线 jpeg 还是渐进式 jpeg。
    • 我不认为我会非常在意,我宁愿尝试在大小和质量之间找到适当的平衡,并通过 CDN 研究尽可能快的交付机制。
    猜你喜欢
    • 2020-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-14
    • 2017-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多