以前用过分析文件头的方法,但是即麻烦又有可能不准确。
不同软件生成的JPEG文件格式不同,如同一个JPEG文件用不同的软件(ACDSee, PhotoShop, Paint, Photo Editor等)另存一下,文件头都可能不同。
在.NET中是否有什么简单的方法呢。原来以为调入文件生成Image,通过检查Image的属性就可以很简单的知道,但发现无论是JPEG还是Bitmap通过上述方式调入后,Image的ImageType属性都是Bitmap.在.NET还有其他的方法可以检查图形文件格式吗。我的文件指本地文件,数据块(byte[])。
不同软件生成的JPEG文件格式不同,如同一个JPEG文件用不同的软件(ACDSee, PhotoShop, Paint, Photo Editor等)另存一下,文件头都可能不同。
在.NET中是否有什么简单的方法呢。原来以为调入文件生成Image,通过检查Image的属性就可以很简单的知道,但发现无论是JPEG还是Bitmap通过上述方式调入后,Image的ImageType属性都是Bitmap.在.NET还有其他的方法可以检查图形文件格式吗。我的文件指本地文件,数据块(byte[])。
附:JPEG 文件格式
~~~~~~~~~~~~~~~~ - 文件头 (2 bytes): $ff, $d8 (SOI) (JPEG 文件标识)
- 任意数量的段 , 见后面
- 文件结束 (2 bytes): $ff, $d9 (EOI) 这样只需要判断前两个字节和最后两个字节就可以了
(详见:http://www.allaboutprogram.com/bb/viewtopic.php?t=1359&start=0&postdays=0&postorder=asc&highlight=)
但是有很多软件生成的文件头不太一样,例如1个标准JPEG文件在ACDSee6.0中另存之后,第4个字节就变成了0xE1.
我说的是文件开头的两个字节,和文件末尾的两个字节,这一共四个字节不会变,不是前四个字节