读书人

timage怎么显示blob中的图象

发布时间: 2012-02-12 17:16:33 作者: rapoo

timage如何显示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中的图象呢?

[解决办法]
image1好像只能直接显示数据库中的bmp,其它格式的不行
[解决办法]
和什么数据库没有关系。
不能显示有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;

读书人网 >.NET

热点推荐