如果我理解正确,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; ....