Delphi中国  
首页 | 电脑常识 | 业界动态 | Delphi相关 | 最新源码 | 网络文摘 | 常用工具 | 专题 | 会员中心
  当前位置:首页>Delphi相关>数据库编程>文章内容

Delphi中实现JPG、BMP图像的数据库存取
来源:www.delphi86.com 作者:蜗牛 发布时间:2008-07-04  

Delphi 中实现JPG和BMP图像的数据库存取

1、在数据库中包括Blob类别的数据库字段,例如 photo

2、保存时,通过 OpenDialog 找到某文件,Jpg 或者 Bmp 皆可

3、借助一个 Image 用于显示该图片

4、保存时,先显示该图片,然后保存到数据库,一定要用 Graphic

    image1.Picture.LoadFromFile(OpenDialog1.FileName);
    ADODataSet1.FindField('photo').Assign(image1.Picture.Graphic)

5、为了在浏览数据库时能更新 image 的图像,也就是显示,先判断有无记录,记录中的图像有无信息,再从图像字段数据流中取出前2字节,以此判断图像是 jpg 还是 bmp,再分别显示

先定义一个取文件头n字节的函数

GetFileFlag(filestring:string;len:integer):string;//获取文件标识符 前 len 字节的十六进制
var ch:char;
  i:integer;
  s:string;
begin
  s:='';
  for i:=1 to len do
  begin
    ch:=filestring[i];
    s:=s+inttohex(ord(ch),2);
  end;
  GetFileFlag:=s;
end;

再在程序中显示图像字段的图像

    if  ADODataSet1.RecNo>0 then
    if ADODataSet1.FieldByName('StylePhoto').AsString<>'' then
    begin
      fileflag:=GetFileFlag(ADODataSet1.FieldByName('StylePhoto').AsString,2);
      if fileflag='FFD8' then //Jpeg
      begin
        jpg:=TJpegImage.Create;
        try
          jpg.Assign(ADODataSet1.FieldByName('StylePhoto'));
          image1.Picture.Graphic:=jpg;
        finally
          jpg.free;
        end;
      end
      else if fileflag='424D' then// BMP
      begin
        image1.Picture.Assign(ADODataSet1.FieldByName('StylePhoto'));
      end;
    end
    else
      image1.Picture.assign(nil);


(阅读次数:

上一篇:将excel导入到Delphi中   下一篇:Delphi全全操作Excel
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论
  热点文章
·海量数据库的查询优化及分页算法
·动态注册ODBC数据源的通用方法
·根据数据字典表定义的表结构,生
·在Delphi中使用原生ADO控制数据
·如何实现SQL Server数据库的备份
·分布式多层数据库开发3
·李维《Delphi 2006 高效数据程序
·关于数据库编程之C/S开发
·ASTA3 初探
·TClientDataSet的使用技巧
·SQL Server日期计算
·异构数据库之间的导入导出示例
  相关文章
·数据库全面介绍
·SQL Server 关系数据库简介
·如何在Delphi中进行指纹仪的2次
·怎样在Paradox表中加密码
·不同数据库之间转换
·SQL Server日期计算
·浅谈Delphi7.0连接Oracle数据库
·SQL排名与交叉
·TClientDataSet的使用技巧
·在SQLServer上得到客户端信息
·如何实现SQL Server数据库的备份
·李维《Delphi 2006 高效数据程序

Delphi中国
苏ICP备07008953