将图片从Access数据库加载到TImage组件

时间:2013-09-01 17:13:05

标签: image delphi ms-access load delphi-7

我正在尝试将数据库中特定位置的图片加载到图片中,但我的代码遇到了一些我无法解决的问题。

基本上我想在一个应用程序中加载由唯一ID指定的图像,该应用程序适用于具有不同帐户的不同用户。图像应基本上加载用户先前保存的图片。

首先,我使用以下查询来确定我需要的图片:

procedure TForm12.BitBtn1Click(Sender: TObject);
begin
  with ADOQuery7 do
  begin
    Close;
    Sql.Clear;
    Sql.Add('SELECT Profile_Picture FROM profile WHERE username='+QuotedStr(edit12.text));
    Open;
  end;
end;

哪个工作正常,并且确实以具有指定用户名的图片的字段为目标。然后我使用以下内容将图片加载到空的TImage中:

procedure TForm12.BitBtn2Click(Sender: TObject);
var
  AStream: TMemoryStream;
begin
  AStream := TMemoryStream.Create;
  try
    if ADOquery7.Active then
    begin
      TBlobField(ADOQuery7.FieldByName('Profile_Picture')).SaveToStream(AStream);
      AStream.Position := 0;
      Image6.Picture.Graphic.LoadFromStream(AStream);
    end;
  finally
    AStream.Free;
  end;

端;

但我总是遇到访问冲突错误。任何人都有任何想法是什么问题? 我加载图像的文件存储在OLE对象列中。

1 个答案:

答案 0 :(得分:1)

  

然后我使用以下内容将图片加载到空的TImage中:

然后Image5.Picture也为空,并且尚未分配Graphic对象;你不能打电话给LoadFromStream

您必须知道图形类型,创建并加载该图形,然后将其分配给图像组件,例如shown in this answer