各位大虾:当我使用下面的语句时:
procedure TForm1.Button3Click(Sender: TObject);
begin
image1.Picture.bitmap.Assign (TBlobField(query1.FieldbyName('pic')));
end;
end.
delphi报错 "bitmap image is not valid". 位图图象绝对没问题,我已经试过多次。我用的数据库是access 2000 。
当我改为下面的代码:
procedure TForm1.Button1Click(Sender: TObject);
var
b:Tmemorystream;
begin
b:=Tmemorystream.create ;
tblobfield(query1.FieldByName('pic')).SaveToStream (b);
image1.Picture.Bitmap.LoadFromStream (b) ;
end;
delphi没有任何错误出现,但是image中根本不显示图象。query1的查询无问题,我也试过多次。(用dbimage也是一样)
请问那位仁兄可解此问题,image如何才能显示blob中的图象呢?
procedure TForm1.Button3Click(Sender: TObject);
begin
image1.Picture.bitmap.Assign (TBlobField(query1.FieldbyName('pic')));
end;
end.
delphi报错 "bitmap image is not valid". 位图图象绝对没问题,我已经试过多次。我用的数据库是access 2000 。
当我改为下面的代码:
procedure TForm1.Button1Click(Sender: TObject);
var
b:Tmemorystream;
begin
b:=Tmemorystream.create ;
tblobfield(query1.FieldByName('pic')).SaveToStream (b);
image1.Picture.Bitmap.LoadFromStream (b) ;
end;
delphi没有任何错误出现,但是image中根本不显示图象。query1的查询无问题,我也试过多次。(用dbimage也是一样)
请问那位仁兄可解此问题,image如何才能显示blob中的图象呢?
不能显示有2个可能。
1、你的代码有错误,
tblobfield(query1.FieldByName('pic')).SaveToStream (b);
/////////加一句 b.Position:=0;
image1.Picture.Bitmap.LoadFromStream (b) ;2、数据库中保存的是JPG文件,不是BMP,(也可以是其他类型文件,处理比较麻烦)
可以这样处理:
jp := TJPEGImage.Create;
jp.LoadFromStream(b);
try
image1.Picture.Bitmap.Assign(jp);
finally
jp.Free;
end;
可以先保存成一个文件,然后 timage 去装载这个文件,用完后删除这个文件就可以了
我这么用, jpg 和 bmp 都没有问题
用TGraphicField指明了数据类型是ftGraphic,这样就应该没问题了