delphi 读取access中保存的图片,并加载到Image控件上,支持多种图片格式。我使用的是Delphi 2010.
我在网上看到的例子,是先将读出的流数据加载到TJpegImage中,再将TJpegImage加载到TImage中,问题是这种方式只支持Jpeg格式的图片,其他格式不支持,...
我在网上看到的例子,是先将读出的流数据加载到TJpegImage中,再将TJpegImage加载到TImage中,问题是这种方式只支持Jpeg格式的图片,其他格式不支持,求教了
展开
4个回答
展开全部
我之前做过,给个例子吧。
如果是JPG格式图片需要引用——use JPEG
然后定义
var
MyJPEG: TJPEGImage;
...
MyJPEG := TJPEGImage.Create;
if not ADOQuery1.FieldByName('Photo').IsNull then //有照片存在的话
begin
TBlobField(ADOQuery1.FieldByName('Photo')).SaveToStream(ms); //将查询到JPEG保存到ms中
ms.Position := 0; //设置数据指针在TStringStream中的位置为0
MyJPEG.LoadFromStream(ms); //从流中加载到MyJPEG
Image1.Picture.Bitmap.Assign(MyJPEG); //显示在Image中(图片是JPG的转换成BMP)
end;
另外,建议你图片保存到数据库的时候格式转成JPG的,占用空间少。
什么只支持Jpeg的?Image只支持Bmp格式的,而数据库一般存储的是JPEG格式的,JPEG占用空间小(上面一行代码就是把JPEG转成BMP格式,再放到Image中)。
还有你存储的时候就应该存JPG的格式。
如果是JPG格式图片需要引用——use JPEG
然后定义
var
MyJPEG: TJPEGImage;
...
MyJPEG := TJPEGImage.Create;
if not ADOQuery1.FieldByName('Photo').IsNull then //有照片存在的话
begin
TBlobField(ADOQuery1.FieldByName('Photo')).SaveToStream(ms); //将查询到JPEG保存到ms中
ms.Position := 0; //设置数据指针在TStringStream中的位置为0
MyJPEG.LoadFromStream(ms); //从流中加载到MyJPEG
Image1.Picture.Bitmap.Assign(MyJPEG); //显示在Image中(图片是JPG的转换成BMP)
end;
另外,建议你图片保存到数据库的时候格式转成JPG的,占用空间少。
什么只支持Jpeg的?Image只支持Bmp格式的,而数据库一般存储的是JPEG格式的,JPEG占用空间小(上面一行代码就是把JPEG转成BMP格式,再放到Image中)。
还有你存储的时候就应该存JPG的格式。
追问
上面的代码我看到过,我本来是想不用程序转化格式,直接存储,但是读取的时候出问题,因为TJPEGImage只支持JPEG格式
追答
存的时候也是存储JPG,取的时候取的也是JPG,不过显示的是bmp(因为Image只支持bmp)。如果是其它格式的,读取就会出错。
展开全部
image有一个PICTURE属性,加入你的Timage控件名字叫做Image1,那么 就是Image1.picture.
Graphic := bitmap(这个bitmap是你从数据库中读出的图片数据),就行了
Graphic := bitmap(这个bitmap是你从数据库中读出的图片数据),就行了
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
ACCESS 本来就带 存储图片的功能,好像是用db控件吧 是把图片用二进制的方法转换的 你可以先自己研究研究下!
追问
access存储图片和读取图片都没问题,Image控件支持多种格式的图片,我的问题主要在从access读出来以后,如何将流数据变成图片加载到Image控件
追答
你可以直接用DBimage读取
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
少年,留下邮箱!
我用的是Delphi7
我用的是Delphi7
追问
123duan2009@163.com
追答
很久没上了,忘记给你发了,现在已发,希望问题已经解决
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询