file - 解析JPEG文件格式: Format of entropy-coded segments (ECS)?

标签 file format jpeg

我很难理解 JPEG 文件格式的 ITU-T T.81 规范。希望这里的其他人已经尝试解析 JPEG 文件和/或了解此文件格式的详细信息。

规范表明 ECS0 段在 SOS 段之后开始,但我无法在规范中找到它实际谈论 ECS0 段的格式或如何检测其开始的位置。在线的简单 JPEG 实现的帮助有限,因为它们假设了许多关于它们解析的 JPEG 的内容。

任何人都可以指出我正确的方向吗?

仅供引用:JPEG 文件格式规范是 here .

最佳答案

当标准谈到 ECS 时,它并没有将它称为像 SOS 那样的段类型,具有 header 和大小组件;它实际上是代表 MCU 的原始霍夫曼压缩比特流,包括图像数据。它被填充以填充整数个字节,并且可以选择与 RST header 交错(正式地,RST header 与 ECS 分开)。

当标准说 ECS0 时,它意味着第 0 个(第一个)ECS 运行,而不是特定的 ECS 类型,例如 SOF0/SOF1/SOF2/etc 是不同的类型。

基线 DCT 示例:

FF DA // SOS header
00 08 // 8 bytes
01 // 1 channel
01 00 // channel 1 QT 0 HT 0
00 3F 00 // start/end spectral selector, successive approximation bit high/low
12 34 56 78 ... // Huffman-compressed MCU raw data
 (sequence of Fuffman codes looked-up in AC/DC Huffman tables)

FF D9 // EOI

一个帮助解释 JFIF 结构的方便的免费程序是 JPEGsnoop ( http://www.impulseadventure.com/photo/jpeg-snoop.html )。菜单中有一个“完全解码”选项,它显示原始霍夫曼比特流,它如何映射到霍夫曼符号,如何去量化,然后映射到 DCT 组件。

关于file - 解析JPEG文件格式: Format of entropy-coded segments (ECS)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2467137/

相关文章:

java - Java中基于标题写入csv/excel

Java 将格式化的 Calendar 对象传递给方法

java - java中bmp转jpg

php - 处理大图像

c++ - 如何使用 C++ 在一个 http 请求中将多个文件从服务器复制到本地硬盘?

比较 2 个文件

c# - C# 是否提供等同于 '\n' 来表示分页符?

mysql - 只需将mysql数据库中的5位数字转换为日期

windows - 使用鼠标光标捕获屏幕截图

python - xreadlines 和 for 循环文件之间的区别