起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 418|回复: 13

[搞定]急:关于png类型图片的载入及显示问题**

[复制链接]
发表于 2007-9-20 09:46:23 | 显示全部楼层 |阅读模式
我们需要将png格式的图片存入到数据库中,并显示出来。现在可以通过dataedit右键载入,也可以我们自己通过代码读入流的方式存入到数据库中,但是保存后,图片无法在dataedit中显示出来。请问如何解决这个问题?
回复

使用道具 举报

发表于 2007-9-20 10:45:33 | 显示全部楼层
平台不支持对png文件的操作
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-9-20 14:37:17 | 显示全部楼层
存入图片的代码
var
  lStream : TFileStream;
begin
  lStream := TFileStream.Create(vTemp,SysUtils.fmOpenRead);//vTemp为OpenDialog的FileName
   DS_DZYZ.DataSet.Edit;
   TBlobField(DS_DZYZ.DataSet.FieldByName('YZ')).LoadFromStream(lStream);
end;


读出图片的代码
var
  lStream : TStream;
begin
  lStream := TMemoryStream.Create;
  DS_DZYZ.DataSet.Edit;
  lStream := DS_DZYZ.DataSet.CreateBlobStream(DS_DZYZ.Dataset.FieldByName('YZ'),TBlobStreamMode.bmReadWrite);
  Image1.Picture.Graphic.LoadFromStream(lStream);//此处报错:引用的对象为空
end;
回复 支持 反对

使用道具 举报

发表于 2007-9-20 14:58:13 | 显示全部楼层
Image1.Picture.LoadFromFile(vTemp);
  Image1.Picture.Graphic.LoadFromFile(vTemp);
你用LoadFromFile函数看看呢
其实这里跟字段,跟流都没有关系,是你用错了TImage对象了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-9-20 15:08:34 | 显示全部楼层
但是我们读出图片的时候是读的数据库里面存放的二进制数据,数据库里面存放的并不是文件路径啊
回复 支持 反对

使用道具 举报

发表于 2007-9-20 15:08:47 | 显示全部楼层
字段定义
  数据类型:二进制流
  表现类型:图像

用给你们的版本直接可以用DataEdit来显示png图片的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-9-20 15:13:19 | 显示全部楼层
字段类型这样设置的。
通过dataedit载入png图片是可以的,但是一旦保存,图片就无法在dataedit里面显示出来了,但是实际上图片内容是存入到数据库中的
回复 支持 反对

使用道具 举报

发表于 2007-9-20 15:13:25 | 显示全部楼层
lStream := DataSetBZSJJ1.CreateBlobStream(DataSetBZSJJ1.FieldByName('TP'),TBlobStreamMode.bmReadWrite);
  Image1.Picture. LoadFromFile(vTemp);
  Image1.Picture.Graphic.LoadFromStream(lStream);
这样也不会报错

其实关键是要先创建Graphic对象,才可以调用他的方法
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-9-20 15:28:09 | 显示全部楼层
我先试一下,那dataedit是否确实能显示png图片呐?我这里确实是不能显示
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-9-20 15:45:22 | 显示全部楼层
还有人吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-6-28 04:23 , Processed in 0.043612 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表