Delphi中如何显示SQL图片到图片框里?
追问:不对!你的代码我用了会出错!
追问:不对!你的代码我用了会出错!
答案:转换成流,
先定义流
Var
mStream:TMemoryStream;
Jpg:=TjpegImage;//定义个jpegImage对象
接着创建流
mStream:=TMemoryStream.Create ;
Jpg:=TjpegImage.Create ; //创建jpegImage对象
将图片字段的内容保存到流里面
TBlobField(ADOQuery1.FieldByName('img(图片字段)')).SaveToStream(mStream(流));
jpg.LoadFromStream(Stream);//用jpegImage对象加载流
最后加载图片
image1.Picture.Assign(Jpg);
uses jpeg,classes,DB;
var
pic:Tjpegimage;
jpegStream:TMemoryStream;
jpegStream:=TMemoryStream.Create;
if TBlobField(ADOQuery1.fieldbyname('picture')).BlobSize >0 then
begin
(ADOQuery1.fieldbyname('picture') as TBlobField).SaveToStream(JpegStream);
JpegStream.Position:=0;
try
TempImage.Picture.Graphic := nil;
TempImage.Picture.Graphic:=TJpegImage.Create;
TempImage.Picture.Graphic.LoadFromStream(JpegStream); //读Jpeg
except
TempImage.Picture.Bitmap.LoadFromStream(JpegStream); //读Bmp
end;
end;
jpegStream.Free;
上面这句是我现在用的,可以读取jpeg和BMP图片
此外,你说的读不出来,可能是你保存错了,下面附带保存代码:
var
pic:Tjpegimage;
jpegStream:TMemoryStream;
jpegStream:=TMemoryStream.Create;
if cxImage1.Picture.Graphic <> nil then
begin
cxImage1.Picture.Graphic.SaveToStream(JpegStream);
JpegStream.Position:=0;
Edit;
(ADOQuery1.fieldbyname('picture') as TBlobField).LoadFromStream(JpegStream);
Post;
end;
jpegStream.Free;