delhpi 数据库中的图像存储和读取

来源:互联网 发布:mac os server工具 编辑:程序博客网 时间:2024/06/06 11:45
1 、如何实现在Microsoft Access数据库中的图像存储:
这里是利用TStream的子类TMemoryStream向Microsoft Access数据库中存储图像的。
下面的这段代码是在按了“保存”按钮之后所触发的事件处理程序:

procedure TForm1.Button1Click(Sender: TObject);
var
  MyJPEG: TJPEGImage;
  MS: TMemoryStream;
begin
  MyJPEG := TJPEGImage.Create;
  try
    with MyJPEG do
    begin
      Assign(Image.Picture.Graphic);
      MS := TMemoryStream.create;
      SaveToStream(MS);
      MS.Position := 0;
      Table1.Edit;
      TBlobField(Table1.FieldbyName('Image')).LoadFromStream(MS);
      Table1.Post;
      Messagebox(Getactivewindow(), '图像保存完毕!', '保存', MB_OK);
    end;
  finally
    MyJPEG.Free;
  end;
end;
在这段代码里TStream的子类TMemoryStream利用内存流起到了将BMP格式转化为JPEG格式
的中间桥梁的作用。

2 、如何将图像从Microsoft Access数据库中取出并显示出来:
下面的这段代码是在按了“查看图像”按钮之后所触发的事件处理程序:

procedure TForm1.Button1Click(Sender: TObject);
var
  MyJPEG: TJPEGImage;
  MS: TMemoryStream;
begin
  try
    MS := TMemoryStream.Create;
    TBlobField(Query1.FieldByName('Image')).SaveToStream(MS);
    MS.Position := 0;
    MyJPEG := TJPEGImage.Create;
    MyJPEG.LoadFromStream(MS);
    DBImage1.Picture.Bitmap.Assign(MyJPEG);
    //或是Sender.Picture.Assign(MyJPEG);
  finally
    MS.Free;
    MyJPEG.Free;
  end;
end;

用到TBlobField的时候要在接口包含DB,用到TJPEGImage时要在接口包含Jpeg
原创粉丝点击