【问题标题】:Database image to TImage数据库图像到 TImage
【发布时间】:2013-02-06 04:31:00
【问题描述】:

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

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

   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;

导致错误“数据集未处于编辑或插入模式”。所以我用了第一个。

但将其恢复为 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)。 有点卡住了。

s

【问题讨论】:

  • 尝试将s的位置设置为0,在从字段读取之后,在加载位图之前,在最后一个sn-p中。
  • ` var S : TStream ; s := gallery.CreateBlobStream(gallery.FieldByName('Image'), bmRead); s.位置:= 0; Pic.Picture.Bitmap.LoadFromStream(S); s.免费;还是报错“Bitmap Image is not valid”
  • 顺便说一句,大多数教程都说我应该将 JPEG 添加到我的使用中......当我这样做时,我会得到带有错误的红色卷线下划线的 JPEG..所以我认为这些教程已经过时了。
  • 字段类型是二进制的吗?
  • 数据库是 Access 2010,图像字段是 OLE (blob)。

标签: delphi delphi-xe2


【解决方案1】:

我想通了:

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

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

    图库.append; gallery.FieldByName('Image').Assign(pic.Picture.Bitmap); 画廊.post;

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

Uses Jpeg

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

var
jpg:TJPegImage;

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

这太酷了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-12
    • 1970-01-01
    • 1970-01-01
    • 2021-02-23
    • 2014-07-14
    • 1970-01-01
    相关资源
    最近更新 更多