【问题标题】:JPEG - Can EOI Marker appear inside image data after SOS?JPEG - 在 SOS 之后,EOI 标记会出现在图像数据中吗?
【发布时间】:2015-06-28 22:03:55
【问题描述】:

我了解 JPEG 文件以 0xFFD8 (SOI) 开头,然后是一些包含元数据的 0xFFEn 段,然后是一些保存压缩相关数据(DQT、DHT 等)的段) 其中最后一个是 0xFFDA (SOS);然后是以 0xFFD9 (EOI) 结尾的实际图像数据。这些段中的每一个都在 JPEG 标记之后的两个字节中声明其长度,因此计算段的结尾/下一段的开始是一个简单的执行,并且可以从 SOS 段的长度计算图像数据的开始.

到目前为止,0xFFD9 (EOI) 的出现是无关紧要的1,因为段是由长度标识的。然而,据我所知,除了在 SOS 段之后找到 0xFFD9(EOI) 标记之外,没有其他方法可以确定图像数据的长度。为了确保这一点,这意味着 0xFFD9 不得出现在实际图像数据本身中。 JPEG 算法中是否内置了一些东西来确保或者我在这里遗漏了什么?


1 如果图像中包含缩略图,则可能会出现第二个 0xFFD8 和 0xFFD9,但这取决于包含段的长度 - 通常是来自我的 0xFFE1 (APP1) 段看到。在我目前检查过的图像中,缩略图数据的开始和大小仍然在 IFD1 中的 0x0201(JPEGInterchangeFormat - JPEG SOI 偏移)和 0x202(JPEGInterchangeFormatLength - JPEG 数据字节)字段中给出,即使这些已被弃用在技​​术说明 #2 中。

【问题讨论】:

    标签: image jpeg exif


    【解决方案1】:

    在 JPEG 中,压缩值 FF 编码为 FF00。

    压缩值 FFD9 将被编码为 FF00D9。

    【讨论】:

    • 没有给出答案。它实际上取决于 JPEG 容器使用的实际压缩。原ITU T.81说在编码过程中我们要用0xFF 0x00字节序列转义0xFF字节,解码过程中我们应该跳过0xFF 0x00字节序列中的0x00。而其他 JPEG 标准扩展并不完全遵循本指南。例如,ITU T.87 JPEG-LS 编码样本在原始标准文档提供的样本 .jls 文件中显然有 0xFF,而不是 0x00(例如 0xFF 0x7F)。这是标准或标准示例的失败,还是只是编写标准的人?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-20
    • 2021-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    • 1970-01-01
    相关资源
    最近更新 更多