delphi – 如何将BLOB流中的任意图像加载到TImage中?

前端之家收集整理的这篇文章主要介绍了delphi – 如何将BLOB流中的任意图像加载到TImage中?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我理解正确,T Image.LoadFromFile将确定文件扩展名中的图片类型.

有没有办法从TBlobStream中自动检测图像类型并带有原始图像?

我目前的代码

procedure LoadImageFromStream(AImage: TImage; ADataSet: TDataSet);
var
  Stream: TStream;
begin
  Stream := ADataSet.CreateBlobStream(Field,bmRead);
  try
    AImage.Picture.Graphic.LoadFromStream(Stream);
  finally
    Stream.Free;
  end;
end

解决方法

请参阅此 SO answer以从标头中检索文件内容.

或者您可以使用我们的TSynPicture class,它将使用Gdi库处理所有类型的图片(bmp / gif / tiff / jpg / png),在一个单独的类中.所以你的TPicture可以是这个独特的类,适用于任何类型的图片.代码开销少于Jpeg或PNG Delphi单元.

var Pic: TSynPicture;

Pic := TSynPicture.Create;
Pic.LoadFromStream(aStream); // will load bmp/gif/tiff/jpeg/png content
AImage.Picture.Graphic := Pic;
....

猜你在找的Delphi相关文章