Delphi图像存取另类解决方案

2016-01-29 14:28 41 1 收藏

Delphi图像存取另类解决方案,Delphi图像存取另类解决方案

【 tulaoshi.com - Delphi 】

  在《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)数据库下运行通过。

来源:http://www.tulaoshi.com/n/20160129/1493424.html

延伸阅读
标签: 减肥 减肥方法
小蛮腰是很显身材的,想知道如何瘦腰吗?腹部减肥很简单,做做瘦腰运动一个晚上就能明显收紧,你相信吗?下面就来教你如何瘦腰,做什么瘦腰运动能快速地帮你腹部减肥。 仅仅一晚上针对小腹的锻炼就会让它明显收紧,很不可思议吧?但它确实发生了。 形体教练向我们推荐:做30次转身运动(双手抱在脑后站立,迅速分别向左右两侧依...
标签: Web开发
说明一下我用的是JAVA,所以以下的内容都是其于JAVA的 AJAX与服务器通信是用XML的所以编码方式为UTF-8 我所有的页面都用的是GB2312的所以在与服务器通信时出现在乱码 首先从服务器向客户端(就是浏览器嘛)发送数据时就好解决了 直接在页面上面加上   %@ page contentType="text/html;charset=GB2312% 如果是用Servlet就加 response.s...
现象 : ... java: 1801: method does not override a method from its superclass @Override... 原因 : Eclipse is defaulting to Java 1.5 and you have classes implementing interface methods (which in Java 1.6 can be annotated with @Override, but in Java 1.5 can only be applied to methods overriding a superclass method...
标签: 暗黑3
《暗黑3》两种另类的MF装切换解决方案设想 译者注:自从官方公布了新的MF装切换问题解决方案之后,引起了玩家们的轩然大波。不少人认为这些解决方案都是在削弱MF。这些日子里,也不乏许多理性的玩家(无论他们是否拥有游戏行业的从业经验)在各个社区、fansite上提出自己对MF系统改进的设想。在聆听这些来自民间的见解时,我们也希望暴雪能够早...
微软在桌面系统上的成功,令我们不得不大量使用它的办公产品,如:Word,Excel。时至今日,它的源代码仍然不公开已封锁了我们的进一步应用和开发。然而在要求更高的服务器领域,微软本身的产品移植性不好, 性能不佳。在我们实际的开发中,表现层的解决方案虽然有多样,但是Ie浏览器已成为最多人使用的浏览器,因为大家都用Windows。在企业...

经验教程

976

收藏

63
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部