当前位置: 首页 > 图文教程 > 开发语言 > Delphi > Delphi图像存取另类解决方案

Delphi
利用Delphi编写Socket通信程序
用Delphi设计“抢三十”游戏
对《QQ列表精灵》源代码分析和仿制
Delphi接口编程的两大陷阱
基于Delphi的组件设计之简单实例
基于Delphi的组件设计之概念
浅述Delphi下的OpenGL图形开发
深入理解Delphi的消息机制
Delphi处理SQL Server多媒体数据
Delphi中为RichEdit加入链接
用Delphi7设计FTP上传软件
利用Delphi编程控制摄像头
用Delphi实现快闪窗体信息提示
Delphi制作图形化的ComboBox
用Delphi设计能携带附件的EMail
Delphi中利用网页打造程序界面
Delphi控件的“拿来主义”
Delphi设计PhotoShop型弹出菜单
用Delphi获取Windows及系统路径
Delphi控制Excel自动生成报表

Delphi图像存取另类解决方案


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 41 ::
收藏到网摘: n/a

  在《Delphi存取图像完整解决方案》一文中,笔者提供了一种DELPHI存取JPEG、BMP图像到数据库的解决方案,虽然它适用于ACCESS和SQL数据库,但它并不适用于所有数据库(比如PARADOX数据库中的GRAPHIC图像字段就不能采用该方法存取图像数据),下文将介绍DELPHI利用ASSIGN方法存取JPEG、BMP图像到数据库的另一解决方案来进行补充完善。演示数据库结构和窗口界面设计同前文,不再重述,将单元的相应程序代码作如下更换:



  1. 图像数据的选择及保存

procedure Tform1.selectimageClick(Sender: TObject); //选择图像
begin
if openpicturedialog1.Execute then
image1.Picture.LoadFromFile(openpicturedialog1.FileName );
end;
procedure Tform1.savetodbClick(Sender: TObject); //保存图像到数据库
var
ext:string;
begin
if image1.picture.Graphic <> nil then //避免image1中无图像保存出错
begin
adotable1.Edit ;
adotable1.FieldByName(myimage).Assign(image1.Picture.Graphic);
//以下记录保存到数据库的图像格式
ext:=extractfileext(openpicturedialog1.FileName ); //取出文件扩展名
if uppercase(ext) = .BMP THEN
adotable1.FieldByName(isbmp).VALUE := 1 //BMP型图像数据
ELSE IF (UPPERCASE(EXT) = .JPEG) OR (UPPERCASE(EXT) = .JPG) THEN
adotable1.FieldByName(isbmp).VALUE := 0; //JPEG型图像数据
ADOTABLE1.Post ;
end;
end;

  2. 图像数据的读取及显示

procedure Tform1.ADOTable1AfterScroll(DataSet: TDataSet); //ADOTable1的AfterScroll事件方法程序
 var
  jpegimage:tjpegimage;
 begin
  image1.Picture.Graphic :=nil;
  //下边BMP、JPEG两种图像数据必需分别处理
  if adotable1.fieldbyname(isbmp).Asstring = 1 then //BMP型图像数据
   image1.Picture.bitmap.Assign(adotable1.fieldbyname(myimage))
   //上边语句中的bitmap不能为graphic,否则会出错
  else if adotable1.fieldbyname(isbmp).asstring = 0 then //JPEG型图像数据
   begin //begin2
    jpegimage := tjpegimage.Create ; //通过jpegimage将图像显示在image1,否则会出错
    try
     jpegimage.Assign(adotable1.fieldbyname(myimage));
     image1.Picture.Graphic :=jpegimage;
    finally
     jpegimage.Free ;
    end; //end try
  end; //end begin2
end;

  注:别忘了在单元文件接口部分的uses语句中添入JPEG单元引用。

  以上程序代码在DELPHI6.0+SQL(或ACCESS或PARADOX)数据库下运行通过。