abc*_*bcd 1 delphi idhttp delphi-xe5
我正在为每个URL提供图像并显示TImage.我将使用JPG,GIF和PNG.但我不知道如何找出每个文件的扩展名,然后进行区分.我如何获得标题或任何其他方法让我知道什么类型的文件:GIF或PNG或JPG?
var
MS : TMemoryStream;
GIf: TGIFImage;
jpegimg: TJPEGImage;
begin
MS := TMemoryStream.Create;
GIf := TGIFImage.Create;
jpegimg := TJPEGImage.Create; ///////
try
try
IdHTTP1.get('http://forum.wmonline.com.br/uploads/av-8929.jpg',MS);
Ms.Seek(0,soFromBeginning);
//Gif.LoadFromStream(MS);
//Logo.Picture.Assign(GIF);
jpegimg.LoadFromStream(MS);
Logo.Picture.Assign(jpegimg);
except
ShowMessage('ERRO');
Exit;
end;
finally
FreeAndNil(GIF);
FreeAndNil(MS);
jpegimg.Free; ////
end;
Run Code Online (Sandbox Code Playgroud)
存在旨在允许描述请求(或响应)的内容的机制,但是任何外部元数据可能是不可靠的,完全取决于所涉及的元数据的准确实现和设置.在某些情况下,元数据可能不正确或完全丢失.
幸运的是,与许多文件格式相同,您提到的图像文件类型的规范都要求使用特定的标头来将文件(或流)标识为符合(或有志于符合)相关规范.
`G` `I` `F` (ASCII)
Run Code Online (Sandbox Code Playgroud)
您可能还希望检查后续的3个字节是否有有效的GIF版本号,也是用ASCII编码的:
`8` `9` `a` or `8` `7` `a`
Run Code Online (Sandbox Code Playgroud)
137 80 78 71 13 10 26 10 (decimal)
Run Code Online (Sandbox Code Playgroud)
FF D8 (hex)
Run Code Online (Sandbox Code Playgroud)
因此,要检测响应流中数据的格式,您只需要检查流的前8个字节,以获取其中一个预期的标头值.
| 归档时间: |
|
| 查看次数: |
2998 次 |
| 最近记录: |