有段程序,用图片的扩展名来判断这张图片到底是BMP还是JPEG。总觉得不太完善,请问怎样根据一张图片的内容而非其扩展名判断格式?给个提示就可以了,如果附上源代码更好,谢谢。

解决方案 »

  1.   

    你可以打开文件,看其开头的两个字节是否是字符串“BM”,如果是就是Windows位图文件。
      

  2.   

    http://www.wotsit.org/search.asp?s=graphics
    这里有比较详细的图像格式,自己看看
      

  3.   

    读文本的头信息就知道了,每用UE看过么?http://lysoft.7u7.net
      

  4.   

    To constantine(飘遥的安吉儿) :谢谢!哎,不过我的英文不是很好,看起来有些费力。To ly_liuyang(Liu Yang):我用UltraEdit打开图片看过了,请问我能否仅仅根据文件头的前几位包含JFIF来判定是一张JPEG图片,而根据BM来判定是一张BMP图片?
      

  5.   

    谢谢大家对我的帮助,我昨天在CSDN上找到了一篇类似的贴子。根据该贴子提示的方法我写了以下的代码:
    请大家看看这样做可行吗:将一张图片分别赋给TJpegImage和TBitMap,看哪个没出错就是哪种格式function funcJudgeFormat(loc:string):integer;       //loc为图片的路径
    //函数的返回值为1代表JPEG格式的图片,2为BMP格式的图片,0为其他
    var i:integer;
        j1:TJpegimage;
        b1:TBitmap;
    begin
    try
      i:=0;
      j1:=TJpegimage.Create;
      b1:=TBitmap.Create;  try
        j1.LoadFromFile(loc);
        i:=1
      except
        i:=0
      end;  if i=0 then
      begin
        try
          b1.LoadFromFile(loc);
          i:=2
        except
          i:=0
        end;
      end;finally
      j1.Free;
      b1.Free;result:=i;
    end;
    end;