Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 解析JPEG文件格式:熵编码段(ECS)的格式?_File_Format_Jpeg - Fatal编程技术网

File 解析JPEG文件格式:熵编码段(ECS)的格式?

File 解析JPEG文件格式:熵编码段(ECS)的格式?,file,format,jpeg,File,Format,Jpeg,我很难理解JPEG文件格式的ITU-T T.81规范。希望这里的其他人已经尝试解析JPEG文件和/或了解此文件格式的详细信息 该规范指出,ECS0段在SOS段之后开始,但我找不到规范中实际讨论ECS0段格式的地方,也找不到如何检测其开始。简单的JPEG在线实现的帮助有限,因为它们假设了许多关于它们解析的JPEG的东西 谁能给我指出正确的方向吗 仅供参考:JPEG文件格式规范是。当标准谈到ECS时,它不像SOS那样将其称为段类型,带有头和大小组件;实际上,是代表MCU的原始哈夫曼压缩比特流构成了图

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

该规范指出,ECS0段在SOS段之后开始,但我找不到规范中实际讨论ECS0段格式的地方,也找不到如何检测其开始。简单的JPEG在线实现的帮助有限,因为它们假设了许多关于它们解析的JPEG的东西

谁能给我指出正确的方向吗


仅供参考:JPEG文件格式规范是。

当标准谈到ECS时,它不像SOS那样将其称为段类型,带有头和大小组件;实际上,是代表MCU的原始哈夫曼压缩比特流构成了图像数据。它被填充以填充整数字节,并且可以选择性地与RST头交织(正式地说,RST头与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

JPEGsnoop()是帮助解释JFIF结构的一个方便的免费程序。菜单中有一个“完整解码”选项,显示原始哈夫曼比特流,它如何映射到哈夫曼符号,如何被去量化,然后映射到DCT分量。

我必须解码完整哈夫曼流以确定ECS的结束吗?或者我可以搜索FFxx来检测ECS数据的结尾吗?如果它是一个格式正确的图像,那么您可以搜索FFxx,其中xx=0查找下一段(FF00应在ECS内解释为FF),该段不一定是图像的结尾(即RST标记)。要确定流是否实际有效,必须对其进行完全解码。