怎样将jpeg格式图像文件存入access数据库中(50分)

  • 主题发起人 主题发起人 jxj
  • 开始时间 开始时间
J

jxj

Unregistered / Unconfirmed
GUEST, unregistred user!
用image和dbimage可以用.picture.loadfromfile 调入jpeg文件。
bmp文件可以用fieldbyname('').assign存入数据库,但jpeg文件格式却不行。
用stream的write可以写入数据库,但dbimage不能自动显示,qreport同样。
 
你的dbimage到底是从磁盘读文件(loadfromfile)还是从数据库读?
 
用Stream的write写入的流格式其内容都包含一个头部信息,若要显示其中的图像
信息或其它内容则需跳过其头部信息,详情请查阅Stream的帮助信息。
 
dbimage或image先从磁盘读jpeg文件显示后,存入数据库。
以后显示此记录时,dbimage将自动显示出。
问题是能用用stream的write可以写入数据库,但dbimage不能自动显示。
多谢!!
 
image或dbimage默认是支持bitmap类型图片的,比如如果你将一个*.bmp文件
后缀名改成jpg, loadfromfile时就会出错.
同理, 从stream里面load时,它默认也是作为bitmap类型来处理的,结果当然
显示不出来.
 
用image代替dbimage不就行了?真的一行code都不想写吗?
 
关键是Jpeg文件是哪种字段类型?我真的不知道Access的Blob字段是什么类型。
 
通过, 不过按理说用tmemorystream也是可以的, 不过image.picture没有loadfromsteam
方法, 而picture.graphic又不支持jpg, 只好作罢:-(

procedure TForm1.Table1AfterScroll(DataSet: TDataSet);
begin
if tblobfield(table1.FieldByName('longbinary')).BlobSize>100 then
begin
tblobfield(table1.FieldByName('longbinary')).SaveTofile('c:/temp/aaa.jpg');
image1.Picture.LoadFromfile('c:/temp/aaa.jpg');
end
else
image1.Picture.Assign(nil);
end;
 
如果愿意写代码, 那么用个TJPEGImage作为中间桥梁.
JPEGImage.LoadFromStream(A_BLOB_STREAM);
Image1.Picture.Bitmap.Assign(JPEGImage);
...
 
我可以用tstream的write将jpeg写入blob字段,但我想让dbimage和qreport的qrdbimage自动显示出此blob字段。重点在自动显示。
 
分数不能等分,抱歉。
 
多人接受答案了。
 
后退
顶部