Delphi图片格式判断

利用内存流来判断文件的格式,其实判断文件的前几个字节就可以简单的判断这个文件是什么类型的文件。

procedure TFrm.CheckImgType(Sender: TObject);

var //声明变量

MyImage:TMemoryStream; //内存流对象

Buffer:Word;

i:integer;

begin

if OpenDialog1.Execute then //OpenDialog1是一个文件打开对话框

begin

MyImage:=TMemoryStream.Create; //建立内存流对象

try

MyImage.LoadFromFile(OpenDialog1.FileName); //把刚刚用户选择的文件载入到内存流中

MyImage.Position := 0; //移动指针到最开头的位置

if MyImage.Size = 0 then //如果文件大小等于0,那么

begin

ShowMessage('错误');

Exit;

end;

MyImage.ReadBuffer(Buffer,2); //读取文件的前2个字节,放到Buffer里面

if Buffer=$4D42 then //如果前两个字节是以4D42[低位到高位]

begin

ShowMessage('BMP'); //那么这个是BMP格式的文件

end

else if Buffer=$D8FF then //如果前两个字节是以D8FF[低位到高位]

begin

ShowMessage('JPEG'); //........一样 下面不注释了

end

else if Buffer=$4947 then

begin

ShowMessage('GIF');

end

else if Buffer=$050A then

begin

ShowMessage('PCX');

end

else if Buffer=$5089 then

begin

ShowMessage('PNG');

end

else if Buffer=$4238 then

begin

ShowMessage('PSD');

end

else if Buffer=$A659 then

begin

ShowMessage('RAS');

end

else if Buffer=$DA01 then

begin

ShowMessage('SGI');

end

else if Buffer=$4949 then

begin

ShowMessage('TIFF');

end

else //如是其他类型的文件的话,直接显示错误

begin

ShowMessage('ERR');

end;

end;

finally

MyImage.Free; //释放内存流对象

end;

end;