以前用过分析文件头的方法,但是即麻烦又有可能不准确。
不同软件生成的JPEG文件格式不同,如同一个JPEG文件用不同的软件(ACDSee, PhotoShop, Paint, Photo Editor等)另存一下,文件头都可能不同。
在.NET中是否有什么简单的方法呢。原来以为调入文件生成Image,通过检查Image的属性就可以很简单的知道,但发现无论是JPEG还是Bitmap通过上述方式调入后,Image的ImageType属性都是Bitmap.在.NET还有其他的方法可以检查图形文件格式吗。我的文件指本地文件,数据块(byte[])。

解决方案 »

  1.   

    检查一下jpeg的文件标识:
    附: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=)
      

  2.   

    无论用什么软件保存,只要是jpg,首尾那一共四个字节都不会改变的,因为他们是jpg文件的标志,没有他们就不是jpg文件
      

  3.   

    标准文件头的前4个字节为0xFF, 0xD8,0xFF,0xE0.
    但是有很多软件生成的文件头不太一样,例如1个标准JPEG文件在ACDSee6.0中另存之后,第4个字节就变成了0xE1.
      

  4.   

    第四个字节变不变没有关系,因为它不是jpeg文件的标识
    我说的是文件开头的两个字节,和文件末尾的两个字节,这一共四个字节不会变,不是前四个字节
      

  5.   

    最简单的就是看文件后缀是否有.jpg或.jpeg
      

  6.   

    参考http://community.csdn.net/expert/Topicview2.asp?id=4100088