[摘要] 本文通过实际图像存取速度与对数据库容量影响的量化比较研究,得出在visual basic环境下快速数据库图像存取的方法,对于其他多媒体信息存取与编程环境也有一定的借鉴作用。
[关键词] 图像存取icb方法cka方法
图形图像、音频视频等多媒体信息在数据库中存储不同于传统的文本、数字等有着非常规范的结构化形式,程序设计中采用不同的存取方法,对数据库访问速度,以及数据库文件容量有非常大的影响,程序的运行效率当然也是相差甚远。
一、图像的存储优化
sql server用image字段(access用ole对象字段)来存储图形图像甚至音视频等多媒体信息,在库中以“长二进制数据”的形式存放。以图形图像为例,vb传统的做法是将图像字段与图像控件绑定,加载图像后刷新近期件并更新记录集即可完成图像的存储,这里称为图像控件绑定(image control binding,icb)方法。这种方法的优点是代码简单、容易理解和实现,特别是对于库中所存图像的浏览尤为方便。但由于其不管源图像格式,统一按24位位图进行处理,故只适用于小型图像的存取,如人事档案中的相片,而对于较大的尤其是压缩格式的图像,icb方法的存取速度就会慢得让人无法忍受,数据库的膨胀幅度也会大得惊人。
为提高图像的存储速度,最大限度地减小数据库增幅,对普通图像(如bmp)文件,需要先将其转化成压缩格式文件(如jpeg格式)。图像存储时,先把图像文件按二进制文件打并开读入到相应的byte型数组,再用记录集对象的追加大块数据方法(appendchunk方法)将其写入数据库,这里称之为大块数据存取(chunk access,cka)方法。www.133229.CoM
cka方法图像存入数据库代码:(icb方法略)
dim bytdata() as byte
'以二进制文件方式打开临时图像文件
open app.path &“\temp1.jpg”for binary as #1
redim bytdata(filelen(app.path &“\temp1.jpg”))
get #1, , bytdata()'读入图像→二进制数组
close #1
'用appendchunk方法将二进制数组入库
me.adodc2.recordset(“pic”).appendchunk bytdata()
me.adodc2.recordset.update
表1所示是icb方法和cka方法存储jpeg图像速度与存储图像后数据库文件大小的测试数据对照表。
为突出效果,选用9张2048×1536像素的jpeg数码相片进行测试,图像大小介于1.3mb到2mb之间。分析测试结果得出,
注:①测试环境:p4 1.7g cpu,352mb ddr ram,32mb显存,access 2003数据库;②数据库初始大小:140.0kb(空)。
icb方法存储jpeg相片的平均速度为120b/ms,cka方法则为2848 b/ms。cka方法的存储时间与图像大小成比例,icb方法的存储时间波动范围较大,这是由于存储时间本身较长(12~15s),测试期间受其他进程影响较多造成的。
对于图像存储后库文件的大小,icb方法对应的库文件呈线性膨胀,每次增量为9.2mb左右,即2048×1536像素的24位图文件的大小;cka方法对应的库文件每次增量则与jpeg文件的大小相吻合,如果需要,可在图像格式转换时在保证视觉效果的前提下增大图像压缩率,从而降低图像对数据库大小的影响。
二、图像的查询优化
图像查询时使用icb方法基本不需要写任何代码就可完成查询,借助控件的导航按钮可以方便地实现对数据库中图像的浏览。但若图像记录较多或图像较大,查询操作就会变得异常缓慢,出现类似“死机”的现象。
图像的查询优化包含两方面内容,其一为图像查询与普通数据查询分开进行,避免一次检索过多图像造成查询延时过长;其二需要把存放在数据库图像字段中的信息用cka方法分段读出写到一个临时文件中,重新组装成原来的图像,再进行图像加载和显示。
注:①测试环境同表1;②合成时间包括图像组装和加载时间。
计算得出,icb方法图像查询的平均速度只有35b/ms,cka方法为2809b/ms,与存储速度相当,就是算上图像合成(含加载)时间,cka方法查询速度也能达到2597b/ms。
三、总结
通过实例测试可以发现, cka方法进行图像的存取,无论从速度还是对库文件大小的影响来说,性能都远远优于传统的icb方法,在网络环境下,效果会更加明显。实际上,运用cka方法也可以实现音视频等多媒体信息甚至任何类型计算机文件的数据库存取,这里不再赘述。
参考文献:
[1]李树海陆体虎:对数据库的操作——图像的存储与显示.计算机与信息技术[j],2004(11)
[2]马战宝:基于 intranet 的商品混凝土生产控制管理系统的研究与实现[d].西安:西安交通大学硕士论文,2006
[3]张毅王晓强等:visual basic应用技巧与常见问题你问我答[m].北京:机械工业出版社,2003.222-226