数据库图像到TImage

时间:2013-02-06 04:31:00

标签: delphi delphi-xe2

为什么这段代码不起作用:

使用此代码保存图像就好了(我也看到了报告中的图像):

   gallery.append;
   gallery.FieldByName('Image').Assign(pic.Picture.Bitmap);
   gallery.post;

然而这段代码:

Gallery.Insert;
S := CreateBlobStream(gallery.FieldByName('Image'), bmWrite);
Image1.Picture.Bitmap.SaveToStream(S);
gallery.Post;
S.Free;

导致错误'DataSet未处于编辑或插入模式'。所以我使用了第一个。

但是将其恢复到Timage中的表单会导致“无效的位图格式”

var S : TStream ;
s := gallery.CreateBlobStream(gallery.FieldByName('Image'), bmRead);
Pic.Picture.Bitmap.LoadFromStream(S);
s.Free;

任何图像都会显示错误。我也使用About.com上的教程尝试了DBimage,并不断收到错误。 数据库是Access 2010,图像字段是OLE(blob)。 有点卡住了。

取值

1 个答案:

答案 0 :(得分:0)

我想出来了:

这是如何将Access数据库中的JPG图像显示到Timage:

  1. Access数据库字段是OLE(或blob)。
  2. 使用此代码将图像保存到数据库

    gallery.append; gallery.FieldByName( '图像')分配(pic.Picture.Bitmap)。 gallery.post;

  3. 图库是AdoTable,图像是包含图像的Access字段名称。 现在将图像显示回Delphi Timage组件: 1.在Uses子句中,包含单元的那个使用(File --Use Unit)put:

    Uses Jpeg
    

    然后使用此代码显示图像:

    var
    jpg:TJPegImage;
    
    begin
    jpg :=TjpegImage.Create;
    jpg.Assign(TblobField(gallery.FieldByName('Image')));
    pic.Picture.Bitmap.Assign(jpg);
    jpg.Free;
    end;
    

    那有多酷。