【发布时间】:2010-12-06 03:17:50
【问题描述】:
我需要找到 JPEG (JFIF) 图像的大小。图像未保存为独立文件,因此我不能使用GetFileSize 或任何其他 API,例如这个(图像被放置在流中,除了通常的 JPEG/JFIF 标头外,不存在其他标头(s))。
我做了一些研究,发现 JPEG 图像由不同的部分组成,每个部分都以帧标记 (0xFF 0xXX) 开头,以及该帧的大小。使用这些信息,我能够解析文件中的大量信息。
问题是,我找不到压缩数据的大小,因为压缩数据似乎没有帧标记。此外,压缩数据似乎遵循 SOS (FFDA) 标记,图像以图像结束 (EOI) (FFD9) 标记结束。
实现这一点的一种方法是逐字节搜索 EOI 标记,但我认为压缩数据可能包含这种字节组合,对吧?
是否有一种简单而正确的方法来查找图像的总大小? (我更喜欢一些代码/想法没有任何外部库)
基本上,我需要图像开始 (SOI-FFE0) 和图像结束 (EOI-FFD9) 之间的距离(以字节为单位)。
【问题讨论】:
-
嗯...JFIF 文件中的 SOS 标记?...我觉得我错过了规范中的某些内容...
-
原帖说“没有文件”。他说有一个SOS和一个EOI。不知何故,他嵌入了一个没有任何外部包装器的 JFIF 流。