如何在TDBImage中显示jpg格式的图形数据。(急!!) 我试了一下,出错提示是'bitmap image is not valid'。而同样是bmp格式的数据就能正常显示。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1.jpeg转化成bmp图像.var JPGImage : TJpegImage; bitmap:tbitmap;begin JPGImage:=Tjpegimage.Create; bitmap:=tbitmap.create; try JPGImage.LoadFromfile(jpegfilename); bitmap.assign(jpgimage); dbimage1.picture.bitmap.assing(bitmap); finally jpgimage.free; bitmap.free; end; end; 在做数据库程序时, 如果把.bmp文件存放一到数据库里。我想这个人的就是个傻子,因为我本人以前就干过这种事。哈::); 速度很慢的。 2000在这方面速度有所加快。好了。有几种方法可以实现把.jpg 文件存放到数据库。 第一种是将.jpg格式文件通过流的方式存储到数据库,或者相反的过程读 出来。第二种是我发现的1stclass3000 or 1stclass4000里有一个 dbimage组件完全可以解决这个问题,我采用的是控件, 当然前一种方法我实现了。但需要自己控制。 能不能不转,我数据库本来存的就是bmp的图像,后来为了节约硬盘资源转成bmp,发现tdbimage不支持了。 建议还是按大宋的方法转一下,jpg和bmp的大小差太多了。 将图片转换为jpg格式并写入数据库中:http://www.csdn.net/expert/topic/973/973247.xml?temp=.441189 将jpe存入数据库我已经做到了,现在最头疼的问题是TDBimage不能显示,说是无效格式。Timage可以,但是程序改动太大。我的程序以前做的不好,有一点牵一发而动全身,能不能少一点改动,就用TDBimage 你是怎么把.jpg文件存进去的。就用这个方法读出来嘛. 看看吧,也是用Timage,显示数据库中的jpg图片:http://www.csdn.net/expert/topic/973/973247.xml?temp=.441189 TO MY_FIRST一个函数转换function ChangeBmpToJpg(parasms:Tmemorystream):Tmemorystream;var mybmp:TBitmap; myjpg:TJPEGImage;begin mybmp:=Tbitmap.Create; try mybmp.LoadFromStream(parasms); myjpg:=Tjpegimage.Create; myjpg.Assign(mybmp); myjpg.CompressionQuality:=75; myjpg.Compress; result:=tmemorystream.Create; myjpg.SaveToStream(result); result.Free; myjpg.Free; finally mybmp.free; end;end;///////文件存入数据库//////(table1.fieldbyname('a2') as TblobField ).loadfromfile(tfilename('C:\rrr.jpg));///////内存流存入数据库//////fil1:=tmemorystream.create;fil1:=ChangeBmpToJpg(bmpmemorystream);(table1.fieldbyname('a2') as TblobField ).LoadFromStream(fil1);///////取出//// IBmp:=table1.FieldByName('a5') AS TBlobField; IBmp.SaveToFile('C:\sss2.Jpg'); to zdcnow 我认真看过了,谢谢,我还是希望能用tdbimage。我是不是太执著了 :) to vague(小糊涂) : 呵呵,佩服。 在取出图片之后进行转换处理,然后再把值传给TDBimage就行了,不是不行,不过真的很麻烦,而且速度比直接显示为jpg慢。 出错提示是'bitmap image is not valid'的原因是因为TDBimage不支持jpg格式的数据库字段。所以不要直接在这里给TDBimage的DataFeild字段付值,要在代码里完成,把jpg格式转换为bmp格式,然后再付值。真的很麻烦,我做过,所以我知道。呵呵 to zdcnow呜~~~~那不是折腾人嘛?我知道了,结贴。 listview Dll内窗体过程互调问题?? 子窗口控件消息 dbgrid如何实现鼠标单击能选中一行? 请教一个错误 windows 后台服务问题? 请教关于NMPOP31下载邮件的问题(有源程序)? 请教'一机双屏'高手 在DELPHI中如何将位图文件另存为JPG格式? 请问如何将QReport的预览存成一个bmp图片,或者是txt文件,或者其他? // 如何生成发送的Buf数组??????????????? 报表问题
var
JPGImage : TJpegImage;
bitmap:tbitmap;
begin
JPGImage:=Tjpegimage.Create;
bitmap:=tbitmap.create;
try
JPGImage.LoadFromfile(jpegfilename);
bitmap.assign(jpgimage);
dbimage1.picture.bitmap.assing(bitmap);
finally
jpgimage.free;
bitmap.free;
end;
end;
哈::); 速度很慢的。 2000在这方面速度有所加快。好了。有几种方法可以实现把.jpg 文件存放到数据库。 第一种是将.jpg格式文件通过流的方式存储到数据库,或者相反的过程读 出来。第二种是我发现的1stclass3000 or 1stclass4000里有一个 dbimage
组件完全可以解决这个问题,我采用的是控件, 当然前一种方法我实现了。
但需要自己控制。
http://www.csdn.net/expert/topic/973/973247.xml?temp=.441189
Timage可以,但是程序改动太大。
我的程序以前做的不好,有一点牵一发而动全身,能不能少一点改动,就用TDBimage
http://www.csdn.net/expert/topic/973/973247.xml?temp=.441189
一个函数转换
function ChangeBmpToJpg(parasms:Tmemorystream):Tmemorystream;
var
mybmp:TBitmap;
myjpg:TJPEGImage;begin
mybmp:=Tbitmap.Create;
try
mybmp.LoadFromStream(parasms);
myjpg:=Tjpegimage.Create;
myjpg.Assign(mybmp);
myjpg.CompressionQuality:=75;
myjpg.Compress;
result:=tmemorystream.Create;
myjpg.SaveToStream(result);
result.Free;
myjpg.Free;
finally
mybmp.free;
end;
end;
///////文件存入数据库//////
(table1.fieldbyname('a2') as TblobField ).loadfromfile(tfilename('C:\rrr.jpg));
///////内存流存入数据库//////
fil1:=tmemorystream.create;
fil1:=ChangeBmpToJpg(bmpmemorystream);
(table1.fieldbyname('a2') as TblobField ).LoadFromStream(fil1);//
/////取出////
IBmp:=table1.FieldByName('a5') AS TBlobField;
IBmp.SaveToFile('C:\sss2.Jpg');
我认真看过了,谢谢,我还是希望能用tdbimage。
我是不是太执著了 :)
呵呵,佩服。
在取出图片之后进行转换处理,然后再把值传给TDBimage就行了,不是不行,不过真的很麻烦,而且速度比直接显示为jpg慢。
所以不要直接在这里给TDBimage的DataFeild字段付值,要在代码里完成,把jpg格式转换为bmp格式,然后再付值。
真的很麻烦,我做过,所以我知道。呵呵
我知道了,结贴。