确定JPEG的结尾(与其他文件合并时)

时间:2011-02-03 19:35:39

标签: byte jpeg

我正在创建一个程序,在JPEG结尾处“隐藏”加密文件。问题是,当再次检索这个加密文件时,我需要能够确定它存储的JPEG何时结束。起初我认为这不会是一个问题,因为我可以通过文件检查0xFF和0xD9,JPEG用于结束图像的字节。但是......我注意到在很多JPEG中,这种字节组合是而不是独占...所以我的程序认为图像已经在其中间随机结束了。

我认为必须有一套方法来表达JPEG已经完成,否则我在文件末尾添加一些字节会显然会破坏它......有没有实用的方法来做到这一点?

4 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

嗯,文件中总有两个地方可以找到100%的可靠性。开始和结束。因此,当您添加隐藏文件时,添加另一个 4个字节,用于存储文件的原始长度和一个始终不同的特殊签名。在阅读时,首先寻找结尾 - 8并阅读该长度和签名。然后只是寻求那个位置。

答案 2 :(得分:0)

您应该阅读我对这个问题“Detect Eof for JPG images”的回答。

答案 3 :(得分:0)

您可能会遇到标题中的缩略图,在浏览文件时,您应该会发现大多数标记的细分包含一个长度指示符,here'是哪个指针和哪个指针别'吨。您可以跳过这些段中的字节,因为真正的eoi标记不在其中。

在实际的jpeg压缩数据中,任何FF字节都应跟随00(然后丢弃零字节),或者由FE标记注释(具有长度指示符,并且可以如上所述跳过) 。
从理论上讲,在压缩数据中遇到错误的eoi读取的唯一方法是在评论中。