不通过扩展名判断图像文件格式
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;
此外,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;
相关文章推荐
- 判断文件类型(文件的真正类型,不是根据扩展名判断),通过文件头来判断
- ASP.NET通过byte正确安全的判断上传文件格式
- 判断文件类型(文件的真正类型,不是根据扩展名判断),通过文件头来判断
- Springmvc图片文件的上传以及通过js判断图片格式
- 一个自己写的真正判断文件格式,文件大小,而并不仅仅从扩展名来进行判断的上传方法,进一步加强防止软件或恶意的木马图片上传
- ASP.NET通过byte正确安全的判断上传文件格式
- C#通过文件头判断图像格式(摘录)
- 判断文件类型(文件的真正类型,不是根据扩展名判断),通过文件头来判断
- C#如何不根据图像文件扩展名来确定一个图像文件是什么格式
- 一个自己写的真正判断文件格式,文件大小,而并不仅仅从扩展名来进行判断的上传方法,进一步加强防止软件或恶意的木马图片上传
- 通过读取文件头部判断是否为CSV格式文件
- 通过读取文件内容判断图片格式的方法
- ASP.NET通过byte正确安全的判断上传文件格式
- ▲三种图像文件格式的选择
- js判断上传文件的格式
- PHP - Manual手册 - XL. Filesystem 文件系统函数 - is_uploaded_file判断文件是否是通过 HTTP POST 上传的
- java通过文件头内容判断文件类型
- android 通过文件路径,判断文件大小
- PPM / PGM / PBM 图像文件格式
- Linux使用AWK判断文件是否是windows格式的