|
|
|
VB实现图像在数据库的存储与显示
作者:Webmaster 来源:Linuxdby.com 点击:
日期:2007-06-05
[收藏] [投稿]
IE是否经常中毒?推荐您
|
摘要本文以VB6与Access97作为开发工具,介绍了图像在数据库中的存储与显示技术。
关键词数据库,数据控件,二进制,图像存储,图像显示,ADODB,Recordset
数据库是数据管理的最新技术,是计算机科学的重要分支,是现代计算机信息系统和计算机应用的基础和核心。在科学技术高速发展的今天,在信息资源无处不在、无处不用,已成为各部门的重要财富的时候,对于从事程序开发的人员来说显得尤为重要。
如今,对数据库的操作不仅仅满足于对字符和数字的单一操作,图像的存储与显示已显得尤为重要。下面作者将以VB6.0与Access97作为开发工具,分别介绍两种图像显示与存储的方法。
利用数据控件和数据绑定控件
利用这种方法,不写或写少量代码就可以构造简单的数据库应用程序,这种方法易于被初学者接受。在举例之前,先把数据绑定功能简要的说明一下,凡是具有DataSource属性的控件都是对数据敏感的,它们都能通过数据控件直接使用数据库里的数据。比如CheckBoxControl,ComboBoxComtrol,TextBoxComtrol,PictureBoxControl,ImageComtrol…因为这种方式涉及到的知识点比较少,也比较容易理解,不多作说明,现直接介绍编程步骤。
1、从数据库中显示所需要的图片
首先,添加一个Data数据控件,设置它的DatabaseName和RecordSource属性,
->strPath=App.Path IfRight(strPath,1)<>"\"Then strPath=strPath&"\" MyData.DatabaseName=strPath&"ExampleDB.mdb"'数据库存地址 MyData.RecordSource="Info"'表名-> 第二步,添加Image控件用来显示图片,设置它的DataSource和DataField属性。例如本例中:Image1.DataSource="MyData"和Image1.DataField="MyPhoto"。然后设置其它具有数据绑定功能的控件用来显示所要的其它内容,经过这两步的操作,运行程序就可以显示你要的数据了。
2、向数据库中添加需要存储的图片
首先,利用数据控件所具有的AddNew属性,添加一个按钮,双击后添加如下代码MyData.Recordset.AddNew
第二步,为Image控件图片指定图片路径Image1.Picture=LoadPicture("图片路径"),经过这两步的操作,就可以向数据库中添加图片了。
这种方法最简单快捷,要写的代码量很少。但是这种方法在运行速度和灵活性方面有一定的限制,适合于初学者和一些简单的应用,要想灵活多变的显示图像,下面介绍的方法或许更适应您的要求。
利用编写代码实现图片的存储与显示
这种方法相对于方法一来说,代码量大,但是它操作灵活,能够满足多样形式下的操作,受到更多编程者的青睐。但是涉及到的知识面相对要多一些,不仅要掌握数据库的操作方法,还要二进制文件的读写作进一步的了解。关于数据库及二进制文件的基本操作很多参考书上都介绍的比较详细,需要时请查阅即可。在编程之前把本部分用到的变量说明如下:
->DimRSAsNewADODB.Recordset DimChunk()AsByte ConstChunkSizeAsInteger=2384 DimDataFileAsInteger,Chunks,FragmentAsInteger DimMediaTempAsString DimlngOffset,lngTotalSizeAsLong DimiAsInteger-> 1、从数据库中显示所需要的图片
第一步首先打开数据库,看有没有要查找的内容,有则继续执行,没有就退出
->RS.Source="select*fromInfoWhereName='"&sparaName&"';" RS.ActiveConnection="UID=;PWD=;DSN=TestDB;" RS.Open IfRS.EOFThenRS.cCose:ExitSub-> 第二步,读出长二进制数据即图片数据,把它转换成图片文件,操作过程如下
->MediaTemp=strPath&"picturetemp.tmp" DataFile=1 OpenMediaTempForBinaryAccessWriteAsDataFile lngTotalSize=RS!MyPhoto.ActualSize Chunks=lngTotalSize\ChunkSize Fragment=lngTotalSizeModChunkSize ReDimChunk(Fragment) Chunk()=RS!MyPhoto.GetChunk(Fragment) PutDataFile,,Chunk() Fori=1ToChunks ReDimChunk(ChunkSize) Chunk()=RS!MyPhoto.GetChunk(ChunkSize) PutDataFile,,Chunk() Nexti CloseDataFile-> 第三步,关闭数据库,这样就可以显示所要的图片了。
->RS.Close IfMediaTemp=""ThenExitSub Picture1.Picture=LoadPicture(MediaTemp) IfPicture1.Picture=0ThenExitSubj-> 2、向数据库中添加需要存储的图片
向数据库添加存储的图片是显示图片逆过程,只要掌握了显示图片的操作,存储图片的操作也就迎刃而解了,下面将操作步骤介绍如下
第一步首先打开数据库,过程如下:
->RS.Source="select*fromInfo;" RS.CursorType=adOpenKeyset RS.LockType=adLockOptimistic RS.ActiveConnection="UID=;PWD=;DSN=TestDB;" RS.Open-> 第二步,把要存储的图片转换成二进制长文件存入数据库中,操作过程如下
->RS.AddNew DataFile=1 OpenstrPathPictureForBinaryAccessReadAsDataFile FileLen=LOF(DataFile)'文件中数据长度 IfFileLen=0Then:CloseDataFile:RS.Close:ExitSub Chunks=FileLen\ChunkSize Fragment=FileLenModChunkSize ReDimChunk(Fragment) GetDataFile,,Chunk() RS!MyPhoto.AppendChunkChunk() ReDimChunk(ChunkSize) Fori=1ToChunks GetDataFile,,Chunk() RS!MyPhoto.AppendChunkChunk() Nexti CloseDataFile-> 第三步,更新纪录后,关闭数据库,就完成了数据图片到数据库的存储。
->RS.Update RS.Close SetRS=Nothing-> 两种方法在使用方面各有所长,读者可以针对自己的情况做出合理的选择。->
如果您对本文有任何疑问或者建议,请到讨论区发表您的意见:
>>
论坛入口 <<
上一篇:VB图像处理之二次线性插值的应用 下一篇:VB图像处理之像素的获取和输出
|
|
|
| 【文章评论】
【收藏本文】
【推荐好友】
【打印本文】
【我要投稿】 【论坛讨论】 |
相关文章: |
| ·VB图像处理之像素的获取和输出 | ·VB实现图像在数据库的存储与显示·VB图像处理之二次线性插值的应用·VB图像处理之几个常用滤镜的实现·VB图像处理之铅笔画算法和木雕算法·用VB6.0编写磁盘格式化程序·VB实现文件数据对SQLServer上传下载·用VB实现实时曲线的绘制和保存·VB图像处理之图像的亮度对比度调整·VB图像处理之图像的色彩纠正
文章评论:(1条) |
|
|
|
|
声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。 |
|