如何使DBIMAGE接受JPG的格式?(100分)

  • 主题发起人 主题发起人 Zhan
  • 开始时间 开始时间
Z

Zhan

Unregistered / Unconfirmed
GUEST, unregistred user!
当把JPG格式的图形存到数据库后,用DBImage的构件显示时,
JPG格式的图形不会显示出来,且会报错误信息:
Bitmap is not Valid.
请指教。
 
不懂数据库 uses JEPG; 可以么?
 
参考一下这个控件 http://vcl.vclxx.com/DELPHI/D32FREE/XZIPFLD.ZIP
改一下就可以用于JPEG文档,这方法只能改了后就只能支持JPEG,但如果作一些大修改
也能支持多种图象格式。
 
dbimage 不支持 Jpeg格式,可以在 TDataSet 中的几个事件中写代码,把 jpg 字段的内容
读出来,再转成 bmp 格式,然后放进一个 TImage 对象里就行了。
编一个JPG的控件不难,你愿意,可以自己做一个。
 
我提了个一样的问题。不过想听听两边的答案。
 
image可以支持jpg
dbimage没试过!
 
可以用Timage来实现
use JPEG;
..
..
procedure TForm1.Query1AfterScroll(Sender : TDataSet);
var
Jpeg1:TJPEGIMAGE;
ImgStream:TStringStream;
begin
ImgStream:=TStringStream.Create(Query1.FieldByName('YourImage').Value);
Jpeg1:=TJpegImage.Create;
Jpeg1.LoadFromStream(ImgStream);
Image1.Picture.Graphic.Assign(Jpeg1);
Jpeg1.Free;
ImgStream.Free;
end;
 
dbimage确实不支持jpeg;
可以uses JPEG;
var jp:Tjpegimage;
然后就跟用tbitmap一样了。
 
以下可以:(假设数据库表DB_Pic中有一字段为图形)
uses Jpeg;
procedure Tform1.Db_Addpic(sender:Tobject);
var
PicName,Ext:string;
JpegImage:TJpegImage;
begin
if openpicturedialog1.execute then
begin
DB_PIC.append;
PicName:=openpictureDialog1.Filename;
Ext:=ExtractFileExt(PicName);
if UpperCase(ExtName)='.BMP' then
begin
//直接存入数据库
end
else if (UpperCase(ExtName)='.JPG') or (UpperCase(ExtName)='.JPEG') then
begin
JPEgImage:=TJpegImage.create;
try
JpegImage.LoadfromFile(PicName);
DB_PIC.Picture.Graphic.Assign(JpegImage);
DB_Pic.Post;
Finally
JpegImage.free;
end;
end;
end;
end;


 
同意softprince
 
1、在uses 中添加jpeg

2、用query定位到需要显示的记录,

3、然后
var tempsream:tstringstream;
tempjpeg:tjpegimage;
try
tempstream:=tstringstream.create('');
tblobfield(query1.fieldbyname('image')).savetostream(tempstream);
tempstream.position:=0;
tempjpeg:=tjpegimage.create;
tempjpeg.loadfromstream(tempstream);
dbimage1.picture.bitmap.assign(tempjpeg);
finally
tempstream.free;
tempjpeg.free;
end;

 
看来除了变成位图,没其他办法了.QUICKREORT也不思进取.只有自己动手!
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部