html - 渐进式 jpeg 与基线 jpeg

标签 html css jpeg progressive

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

最佳答案

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

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

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

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

  • 灰度顺序 JPEG 流将进行一次扫描。
  • 彩色顺序 JPEG 流可能有一次或三次扫描。

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

这是一个令人困惑的术语,它借鉴了直流和交流电流的类比。 DC系数类似于 block 的平均像素值。

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

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

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

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

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

progressive和sequential在质量上没有区别

本书描述了这些过程:

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

关于html - 渐进式 jpeg 与基线 jpeg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40928444/

相关文章:

html - 如何在图像上覆盖可滚动容器中的图像

html - 不同的 CSS 元素不在一条线上

javascript - 更改文本并将 HTML 添加到标签内复选框的文本

html - 控制与上述 P 元素底部相关的 H1 元素的顶部填充

c++ - 在发布版本中使用 QImage 读取 Jpeg 错误

JQuery 对多个 div 进行动画处理并在其中写入文本

html - 移动缩放宽度的响应式设计不正确

html - 如何防止手动调整 md-input-container 的大小

android - bitmap.compress 破坏画质

javascript - jspdf 添加图像 : error supplied data is not a JPEG