JPEG数据流到TImage

Wh1*_*Ck5 9 delphi timage delphi-7 filestream

我有一些图像文件存储在一个文件中(某种存档).那个文件看起来像这样:

在此输入图像描述

好吧,它分为两个部分 - 标题和数据段.标题(绿色)包含各种信息,例如专辑名称,位置,日期/时间,描述,相册中的照片数量等.数据段(蓝色和橙色)结构简单,包含N x JPEG照片.我可以将"imagedata"段提取到新的TMemoryStream对象中,现在我想使用TImage来显示它.

我可以使用TMemoryStream的SaveAsFile方法,设置一些临时文件名,从TImage加载该文件,然后删除临时文件.这是有效的,但我想知道是否有任何方法可以使用temp将该流发送到TImage中.文件.

当然,我可以编写代码来提取硬盘上的所有文件,但问题是我有很多这样的档案,只是想写应用程序来阅读那些"专辑",而不是在我的硬盘上有20,000多张照片.

简而言之,我想要的只是进行以下程序工作(没有使用临时文件)

procedure ShowImageFromStream(data: TStream; img: TImage);
begin
...
end;
Run Code Online (Sandbox Code Playgroud)

提前致谢.

TLa*_*ama 19

我不确定这是否是你要找的,但是这段代码应该将JPEG文件从流加载到给定的TImage组件中:

uses
  JPEG;

procedure ShowImageFromStream(AImage: TImage; AData: TStream);
var
  JPEGImage: TJPEGImage;
begin
  AData.Position := 0;
  JPEGImage := TJPEGImage.Create;
  try
    JPEGImage.LoadFromStream(AData);
    AImage.Picture.Assign(JPEGImage);
  finally
    JPEGImage.Free;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

  • 我的上帝,即使我之前使用过TJPEGImage,我也完全错过了LoadFromStream方法!?非常感谢,就是这样. (2认同)