怎么判断LoadFromStream载入的是不是一个图片
如何判断LoadFromStream载入的是不是一个图片
------解决方案--------------------
分析文件头格式
这就要了解JPEG文件存储格式。
所有的图片文件都包括:文件识别头和图象数据两部分,其中文件识别头用来让计算机判断是哪种文件格式。
所有的JPEG文件以字符串“0xFFD8”开头,并以字符串“0xFFD9”结束。依此便可判别是否是JPEG文件。
------解决方案--------------------
- Delphi(Pascal) code
imagestream := TMemoryStream.Create(); jpg:=TJpegImage.Create; idhttp1.Get(strContent,imagestream); imagestream.Position:=0; jpg.LoadFromStream(imagestream);//这里载入的如果不是一个jpg图片就会出错,如何先判断呢? image1.Picture.Assign(jpg);
------解决方案--------------------
分析文件头格式
这就要了解JPEG文件存储格式。
所有的图片文件都包括:文件识别头和图象数据两部分,其中文件识别头用来让计算机判断是哪种文件格式。
所有的JPEG文件以字符串“0xFFD8”开头,并以字符串“0xFFD9”结束。依此便可判别是否是JPEG文件。
------解决方案--------------------
- Delphi(Pascal) code
function CheckPicFormat(MS:TMemoryStream): String; var Bmf : TBitmapFileHeader ; begin Result := 'Err'; if Assigned(MS) then begin MS.ReadBuffer(Bmf, sizeof(Bmf)); if Bmf.bfType <> $4D42 then Result := 'JPEG' else Result := 'BMP'; end; end;