从Access数据库中读出图片出错?

fifapope 2003-12-05 08:59:11
Access数据库中存有员工的信息,有一项是JPEG格式的图片,但用TImage显示时总是出错:
procedure TTForm1.DataSource1DataChange(Sender: TObject; Field: TField);
var
JPEG:TJPEGImage;
begin
if DataSource1.DataSet.FieldByName('照片').IsNull=false then
begin
JPEG:=TJPEGImage.Create;
try
JPEG.Assign(DataSource1.DataSet.FieldByName('照片'));
Image1.Picture.Assign(JPEG);
finally
JPEG.Free;
end;
end
else
Image1.Picture.Assign(nil);
end;
总是提示出错“JPEG error #53”.生成的EXE文件能够正确的显示图片,但每次启动EXE文件时总会弹出这个出错提示。
麻烦大家帮我看看,先谢谢了!
...全文
56 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
fifapope 2004-03-07
  • 打赏
  • 举报
回复
我把这个程序在另一个机器上运行却没有问题,不知道什么原因, :(
谢谢大家!
XXSingle 2003-12-12
  • 打赏
  • 举报
回复
ADODataSet1DSDesigner3 是在ADODataSet1右键添加得到的图像字段

ADODataSet1DSDesigner3: TBlobField;
XXSingle 2003-12-12
  • 打赏
  • 举报
回复
试试以下方法,我在delphi+sql2k测试成功:

读取:
var
JPEG:TJPEGImage;
begin
if DataSource1.DataSet.FieldByName('图像').IsNull=false then
begin
JPEG:=TJPEGImage.Create;
try
JPEG.Assign(DataSource1.DataSet.FieldByName('图像'));
Image1.Picture.Bitmap.Assign(JPEG);
finally
JPEG.Free;
end;
end
else
Image1.Picture.Bitmap.Assign(nil);

保存:

var
JPEGImage:TJPEGImage;
begin
JPEGImage:=TJPEGImage.Create; //创建JPEG图像对象
try
JPEGImage.LoadFromFile(lbl_path.Caption); //从文件中装载jpg图像,
ADODataSet1.Append;
ADODataSet1.FieldByName('文件名').Value:=extractfilename(lbl_path.Caption);
ADODataSet1DSDesigner3.Assign(JPEGImage); //将jpg导入
ADODataSet1.Post;
finally
JPEGImage.Free; //释放对象
end;
fifapope 2003-12-07
  • 打赏
  • 举报
回复
没有,和这有关系吗?
whereto 2003-12-06
  • 打赏
  • 举报
回复
有没有先在image控件中预放一张jpeg图片?
fifapope 2003-12-06
  • 打赏
  • 举报
回复
TO: whereto(),我照你说的方法做了,还是同样的出错提示,你当时是怎么解决的,就改了这些吗?
To:ksxm(瀟湘子) ,应该不是存入的问题,因为生成的EXE文件能够正常显示,就是启动时老是弹出一个出错提示,关闭后程序能够正常运行。
fifapope 2003-12-06
  • 打赏
  • 举报
回复
To:lpc444(诚恳地学习),我找了一下你的帖子,但好象是讲的将图片存入数据库中,而不是从数据库中读出。
ksxm 2003-12-05
  • 打赏
  • 举报
回复
也许跟你存进去的方法有关

procedure TForm1.Button8Click(Sender: TObject);
var
JPEGImage:TJPEGImage;
begin
JPEGImage:=TJPEGImage.Create; //创建JPEG图像对象
if OpenDialog1.Execute then
try
JPEGImage.LoadFromFile(OpenDialog1.FileName); //从文件中装载jpg图像,
ADOquery1.Edit;
DBImage1.Picture.Bitmap.Assign(JPEGImage); //将jpg导入
ADOquery1.Post;
finally
JPEGImage.Free; //释放对象
end;

end;


whereto 2003-12-05
  • 打赏
  • 举报
回复
这个问题我(二年前)遇到过,Tpicture是一个容器,Tgraphic为抽象类,
所以建议用
Image1.picture.graphic:=jpeg;
或Image1.Picture.Graphic.Assign(jpeg);
lpc444 2003-12-05
  • 打赏
  • 举报
回复
我有一个较详细能够正常显示图片的源码(请查找LPC444的贴子)!
fifapope 2003-12-05
  • 打赏
  • 举报
回复
我在google上搜了一阵子,有很多提到这个问题的,但都说的不是很清楚,请高手指点!

2,498

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧