您的位置:首页 > 其它

不通过扩展名判断图像文件格式

2011-01-04 21:41 302 查看
  编制一个小程序,需要判断图像文件格式。从网上搜索到,文件头第1个字节:1、$00 Icon;2、$42 Bmp;3、$FF JPEG 。据此进行判断。

  此外,Jpeg文件的格式是以$FF $D8开头的,以$FF $D9结尾。但是有时候也并不一定以$FF $D9结尾,因为一般Jpeg解读代码读到$FF $D9的时候就终止解读了,但文件并不一定非要结束,可以继续有内容。有的Jpeg文件会在文件末尾加入额外内容,作为隐藏内容藏在文件中。就是所云的图片中隐藏的秘密。

  综上所述,为了快速判断文件的图像内容是不是Jpeg文件格式的,可以预读一下文件头,如果是以$FF $D8开头,我们就可以认为文件是合法的Jpeg编码格式。

Delphi代码如下:
function IsGoodJpeg(fn: String): Boolean;
var
strm: TFileStream;
ch1, ch2: Byte;
n: Integer;
begin
Result := False;
if not FileExists(fn) then
Exit;

ch1 := $00;
ch2 := $00;
strm := TFileStream.Create(fn, fmOpenRead);
try
n := SizeOf(ch1);
if strm.Size > (n * 4) then
begin
strm.Read(ch1, n);
strm.Read(ch2, n);
if (ch1 = $ff) and (ch2 = $d8) then
Result := True;
end;
finally
strm.Free;
end;
end;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐