Delphi存取图像完整解决方案-Delphi-优质IT资源分享社区

admin
管理员
管理员
  • UID1
  • 粉丝26
  • 关注4
  • 发帖数581
  • 社区居民
  • 忠实会员
  • 原创写手
阅读:102回复:0

Delphi存取图像完整解决方案

楼主#
更多 发布于:2016-06-11 14:07

 对于
波及图画数据的数据库
使用程序,图画数据的存取技能是一个
关键 。由于
缺少技能文档及DEMO例程演示,为此小编在网上查找了
有关
资料,有的
底子不能用,有的过于
冗长,有的
使用
规划太窄(如不得不
实用于BMP图画),有的写得过于
便利
了解起来十分
困难 。 。 。并且在网上这也是我们
对比关心的一个疑问 。小编对这个疑问进行了
重复实作和探求,下边小编将经过一个
彻底的
便利例子来
注明怎么
保存和显现SQL数据库中的图画数据(一起包括BMP和JPEG两种
格式) 。
一、
创造演示数据库
在SQL SERVER中新建一演示数据库:Demo,并
创造一数据表Picture1,
结构如下:
怎么制造移动网站向长辈问候:平板在iPad之前都长这么
小白变大师 人像拍摄速成窍门大集合7天拍摄入门 拍出好相片的9个基本要素
字段名 Dtata Type Identity
Id Int Yes
Isbmp Tinyint
各种Windows7装置办法及解析iPhone怎么显现准确的信号数值
别让尘埃变成麻烦 浅谈机箱防尘重要性简略装置与卸载Windows7的办法
Myimage Image
字段Isbmp是用来记载在Myimage中存入的图画的类型(0表JPEG,1表BMP,其它值表无图画),Isbmp数据类型选用整型Tinyint而末选用逻辑bit型重要是考量到如下
过程仍
实用于ACCESS数据库 。在SQL中
翻开表Picture1,添入几条记载,Myimage图画字段值暂
不管,字段Isbmp值
随意输入0和1以外的其它数 。
二、 窗口设计
在Delphi中新建一个工程,在FORM1上
放置如表所示控件(考量到TDBImage型控件不能准确显现JPEG型图画,所以选用Timage型控件显现全部类型图画) 。
组件种类 组件特点名 特点值
用途
注明
Timage caption Image1 显现图画
name Image1
Stretch True
Tbutton caption
取舍图画
取舍图画
name selectimage
Tbutton caption
保存图画
保存图画到数据库
name savetodb
TADOConnection caption Adoconnection1
创造与数据库demo的联接
name Adoconnection1
Connectionstring 见补白
Connected True
Loginprompt False
Tadotable Caption Adotable1
构建与表Picture1的联接
name Adotable1
Connection Adoconnection1
Tablename Picture1
Active True
Tdatasource Name Datasource1
构建数据源
Dataset Adotable1
Topenpicturedialog Caption Openpicturedialog1
取舍图画文件
Name Openpicturedialog1
Tdbgrid Caption Dbgrid1 显现记载
Name Dbgrid1
Datasource Datasource1
补白:
adoconnection1.connectstring :=
'Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial
Catalog=demo;
Data Source=Mysqlserver'
Mysqlserver为SQL服务器的称号请据实践情况更改 。
三、 程序代码(首先在单元文件接口
有些的uses句子中添入JPEG单元
引证)
1. 图画数据的
取舍及
保存
procedure TForm1.selectimageClick(Sender: TObject); //
取舍图画
begin
if openpicturedialog1.Execute then
image1.Picture.LoadFromFile(openpicturedialog1.FileName );
end;
procedure TForm1.savetodbClick(Sender: TObject); //
保存图画
var
strm:tmemorystream;
ext:string;
begin
if image1.picture.Graphic <> nil then //逃过image1中无图画
保存犯错
begin
ext:=extractfileext(openpicturedialog1.FileName ); //
存入文件的
扩台甫
strm := tmemorystream.Create ;
try
image1.Picture.Graphic.SaveToStream(strm);
adotable1.Edit ;
strm.Position :=0;
tblobfield(adotable1.FieldByName('myimage')).LoadFromStream(strm);
//如需直接由文件
保存可采用如下
诠释行
//TBlobField(adotable1.FieldByName('myimage')).LoadFromFile(OpenPictureDialog1.FileName);
//以下记载
保存到数据库的图画
格式
if uppercase(ext) = '.BMP' then
adotable1.FieldByName('isbmp').Value := 1 //BMP型图画数据
else if (uppercase(ext) = '.JPG') OR ( uppercase(ext) = '.JPEG') Then
adotable1.FieldByName('isbmp').Value := 0; //JPEG型图画数据
adotable1.Post ;
finally
strm.Free ; //小编发现如strm采用tblobstream类,程序运转到该句子会显现疑问
end;
end;
end;
对于
波及图画数据的数据库
使用程序,图画数据的存取技能是一个
关键 。由于
缺少技能文档及DEMO例程演示,为此小编在网上查找了
有关
资料,有的
底子不能用,有的过于
冗长,有的
使用
规划太窄(如不得不
实用于BMP图画),有的写得过于
便利
了解起来十分
困难 。 。 。并且在网上这也是我们
对比关心的一个疑问 。小编对这个疑问进行了
重复实作和探求,下边小编将经过一个
彻底的
便利例子来
注明怎么
保存和显现SQL数据库中的图画数据(一起包括BMP和JPEG两种
格式) 。
一、
创造演示数据库
在SQL SERVER中新建一演示数据库:Demo,并
创造一数据表Picture1,
结构如下:
字段名 Dtata Type Identity
Id Int Yes
Isbmp Tinyint
Myimage Image
字段Isbmp是用来记载在Myimage中存入的图画的类型(0表JPEG,1表BMP,其它值表无图画),Isbmp数据类型选用整型Tinyint而末选用逻辑bit型重要是考量到如下
过程仍
实用于ACCESS数据库 。在SQL中
翻开表Picture1,添入几条记载,Myimage图画字段值暂
不管,字段Isbmp值
随意输入0和1以外的其它数 。
二、 窗口设计
在Delphi中新建一个工程,在FORM1上
放置如表所示控件(考量到TDBImage型控件不能准确显现JPEG型图画,所以选用Timage型控件显现全部类型图画) 。
组件种类 组件特点名 特点值
用途
注明
Timage caption Image1 显现图画
name Image1
Stretch True
Tbutton caption
取舍图画
取舍图画
name selectimage
Tbutton caption
保存图画
保存图画到数据库
name savetodb
TADOConnection caption Adoconnection1
创造与数据库demo的联接
name Adoconnection1
Connectionstring 见补白
Connected True
Loginprompt False
Tadotable Caption Adotable1
构建与表Picture1的联接
name Adotable1
Connection Adoconnection1
Tablename Picture1
Active True
Tdatasource Name Datasource1
构建数据源
Dataset Adotable1
Topenpicturedialog Caption Openpicturedialog1
取舍图画文件
Name Openpicturedialog1
Tdbgrid Caption Dbgrid1 显现记载
Name Dbgrid1
Datasource Datasource1
补白:
adoconnection1.connectstring :=
'Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial
Catalog=demo;
Data Source=Mysqlserver'
Mysqlserver为SQL服务器的称号请据实践情况更改 。
三、 程序代码(首先在单元文件接口
有些的uses句子中添入JPEG单元
引证)
1. 图画数据的
取舍及
保存
procedure TForm1.selectimageClick(Sender: TObject); //
取舍图画
begin
if openpicturedialog1.Execute then
image1.Picture.LoadFromFile(openpicturedialog1.FileName );
end;
procedure TForm1.savetodbClick(Sender: TObject); //
保存图画
var
strm:tmemorystream;
ext:string;
begin
if image1.picture.Graphic <> nil then //逃过image1中无图画
保存犯错
begin
ext:=extractfileext(openpicturedialog1.FileName ); //
存入文件的
扩台甫
strm := tmemorystream.Create ;
try
image1.Picture.Graphic.SaveToStream(strm);
adotable1.Edit ;
strm.Position :=0;
tblobfield(adotable1.FieldByName('myimage')).LoadFromStream(strm);
//如需直接由文件
保存可采用如下
诠释行
//TBlobField(adotable1.FieldByName('myimage')).LoadFromFile(OpenPictureDialog1.FileName);
//以下记载
保存到数据库的图画
格式
if uppercase(ext) = '.BMP' then
adotable1.FieldByName('isbmp').Value := 1 //BMP型图画数据
else if (uppercase(ext) = '.JPG') OR ( uppercase(ext) = '.JPEG') Then
adotable1.FieldByName('isbmp').Value := 0; //JPEG型图画数据
adotable1.Post ;
finally
strm.Free ; //小编发现如strm采用tblobstream类,程序运转到该句子会显现疑问
end;
end;
end;









[font=Tahoma  ][font=Tahoma  ][font=Tahoma  ]

优质IT资源分享社区为你提供此文。
本站有大量优质Delphi教程视频,资料等资源,包含Delphi基础教程,高级进阶教程等等,教程视频资源涵盖传智播客,极客学院,达内,北大青鸟,猎豹网校等等IT职业培训机构的培训教学视频,价值巨大。欢迎点击下方链接查看。
Delphi教程视频
优质IT资源分享社区(www.itziyuan.top)
一个免费,自由,开放,共享,平等,互助的优质IT资源分享网站。
专注免费分享各大IT培训机构最新培训教学视频,为你的IT学习助力!

!!!回帖受限制请看点击这里!!!
!!!资源失效请在此版块发帖说明!!!

[PS:按 CTRL+D收藏本站网址~]

——“优质IT资源分享社区”管理员专用签名~

本版相似帖子

游客