问大家个问题搞了很长时间没弄出来:从数据库中取出图片并显示到image控件中 ( 积分: 10 )

  • 主题发起人 主题发起人 OH
  • 开始时间 开始时间
O

OH

Unregistered / Unconfirmed
GUEST, unregistred user!
问大家个问题,搞了很长时间没弄出来
目的:从数据库中取出图片并显示到image控件中。以下是代码:
procedure TForm1.DBGrid1CellClick(Column: TColumn);
var
ss : TadoBLobStream;
jpegimage : Tjpegimage;
begin
try
adoquery3.close;
adoquery3.Open;
adoquery3.Edit;
jpegimage := Tjpegimage.Create;
jpegimage:=nil;
ss := TadoBlobStream.Create((adoquery3.FieldByName('img') as tblobfield),bmread);
ss.Position := 0;
jpegimage.LoadFromStream(ss);
image2.Picture.Graphic:=jpegimage;
except
on e : Exception do
begin
showmessage(e.Message);
jpegimage.Free;
ss.Free;
exit;
end;
end;
jpegimage.Free;
ss.free;
end;
 
问大家个问题,搞了很长时间没弄出来
目的:从数据库中取出图片并显示到image控件中。以下是代码:
procedure TForm1.DBGrid1CellClick(Column: TColumn);
var
ss : TadoBLobStream;
jpegimage : Tjpegimage;
begin
try
adoquery3.close;
adoquery3.Open;
adoquery3.Edit;
jpegimage := Tjpegimage.Create;
jpegimage:=nil;
ss := TadoBlobStream.Create((adoquery3.FieldByName('img') as tblobfield),bmread);
ss.Position := 0;
jpegimage.LoadFromStream(ss);
image2.Picture.Graphic:=jpegimage;
except
on e : Exception do
begin
showmessage(e.Message);
jpegimage.Free;
ss.Free;
exit;
end;
end;
jpegimage.Free;
ss.free;
end;
 
为什么不用DBImage控件呢?
 
用下面方法是一下

uses
jpeg;



procedure TdmData.RefreshImg(Img: Timage; F: string);
var
jpg:Tjpegimage;
begin
jpg:=Tjpegimage.Create ;
try
try
jpg.Assign(table.fieldbyname(f));
img.Picture.Assign(nil);
img.Picture.Assign(jpg);
Except
Img.Picture.Assign(nil);
Img.Picture.Assign(table.fieldbyname(f));
end;
except
end;

jpg.Free;
end;
 
你还可以在数据库中存图片的路径,到时:
Image1.picture.loadFrom( adoquery1.FieldByName('img').asstring);就好了,
 
var
stream:tmemorystream;
begin
stream:=tmemorystream.Create;
adoqy.close;
adoqy.SQL.Clear;
adoqy.SQL.Add('select id,pic from pic_info where id=2');
//pic为blob字段,也就是存储的图象、文件等
adoqy.Open;
tblobfield(adoqy.FieldByName('pic')).SaveToStream(stream);
stream.SaveToFile(filename);
stream.free;
end;

这个方法可以读出来的。我也没有找到能直接显示的方法,我是将读出来的图片保存
到计算机的临时文件夹中,然后再用image读出来的。
 
后退
顶部