据我所知,JPEG文件以0xFFD8(SOI)开头,后跟一些保存元数据的0xFFE n 段,然后保存压缩的多个段关联数据(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中。
答案 0 :(得分:2)
在JPEG中,压缩值FF编码为FF00。
压缩值FFD9将编码为FF00D9。