本文整理自网络,侵删。
今天分析一个网站的验证码,文件名后缀为.gif的,但用TImage加载该图片时,却弹出“无效的GIF标识”对话框。后来用工具一分析却是JPEG格式的图片,所以对图片处理前很有必要对图片的真实类型进行判断:
function GetImageType(strFileName: string): String;
var
aImage: TMemoryStream;
Buffer: Word;
begin
Result := '';
aImage := TMemoryStream.Create;
try
aImage.LoadFromFile(strFileName);
aImage.Position := 0;
if aImage.Size > 2 then
begin
aImage.ReadBuffer(Buffer, 2); //读取文件的前2个字节,放到Buffer里面
case Buffer of
$4D42: Result := 'BMP';
$D8FF: Result := 'JPG';
$4947: Result := 'GIF';
$050A: Result := 'PCX';
$5089: Result := 'PNG';
$4238: Result := 'PSD';
$A659: Result := 'RAS';
$DA01: Result := 'SGI';
$4949: Result := 'TIFF';
else
Result := 'NONE'; //未知格式
end;
end;
finally
aImage.Free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
ShowMessage(GetImageType(OpenDialog1.FileName));
end;
相关阅读 >>
更多相关阅读请进入《Delphi》频道 >>