用记事本方式打开jpg文件,在文件尾写入文本信息,然后保存。这样的操作会导致原文件内的很多数据丢失,并且没有办法恢复。
因为记事本是文字处理程序,只能显示可见的字符,而jpg文件是二进制文件,里面有很多数值是不可见字符。所以用记事本打开jpg文件就会造成这些不可见字符的丢失,最终导致jpg文件被损坏。
可以用C程序按照二进制方式打开jpg文件,然后在文件尾添加数据后保存。这样的操作会造成jpg文件不能被图片浏览软件识别,但是只要再通过程序把尾部添加的数据删除,则图片文件就可以恢复为原来的大小,并且也可以被图形软件识别了。
--------------------
如果想识别图片尾部是否有附加的文字信息,比较简单的办法,就是在附加的文字信息之前增加若干字节的特征码,比如连续2位或多位的0xff值,这是方法之一。同时也可以辅以附加文字信息定长的方式,如每次附加4K字节文字内容,之前用两个“|”字符作为标识符。
那么在判断的时候,可以从文件尾部倒数4K字节,然后取前两个字节判断是否为两个“|”,如果是,说明这个文件是附加过文字信息的。
----------------
按照jpeg文件格式规范,jpeg文件最后以0xFFD9结束,找到这两个字节,如果之后还有数据,必定是被附加上去的。