数据库的JPG图像处理分析
- 作者:admin 来源:网络 日期:2009-5-6 22:08:33
- 摘要:采用JPG格式在数据库中处理图像的方法,同时给出使用PB开发工具、ORACLE数据库系统的JPG图像处理实例。
关键词:图像处理 JPG 数据库
前言
在开发应用软件时,往往会遇到处理大量图像信息的时候,例如在人事档案系统中职工照片信息的处理。一般情况下,先将一幅幅照片扫描成BMP格式的单个文件,保存在文件系统中,然后在职工数据库中只保存对应照片的文件名。检索时先从数据库得到图像文件名,然后再去访问对应的BMP图像文件的方法。但这种方法存在两个缺点:一是由于BMP图像文件很多,文件系统检索速度慢;二是在网络上运行应用系统,由于BMP格式的图象数据量很大,传输速度慢,同时也占用了大量的存储空间。本文提出了在数据库环境下采用JPG格式存储图像文件以及图像处理的方法,解决了上述缺点。http://www.dxlww.net代写论文网
1.图像格式为何采用JPG格式
能够处理静态图像的格式有:BMP、TIFF、JPEG、GIF等。
⑴GIF:图形互换格式(GraphicInterchangeFormat),储存1位/点至8位/点的图像,其原理是减少每点的存储位数,以减少图像文件的大小。准确地说,GIF减少了图像调色板中的色彩数量,支持的颜色数目较少。
⑵图象格式JPEG即JPG,是由JointPhotographicExpertsGroup提出并因此而得名。JPG在Internet上广泛应用,JPG支持16M色彩也就是通常所说的24位颜色或真彩色。JPG是一种以损失质量为代价的压缩方式,是对图像中某些相同的色彩进行压缩,压缩比越高,图像质量损失越大。JPG只能对具有连续色调或连续灰阶的24位图像进行压缩,对由8位转化成24位的图像没有优势,适用于一些色彩比较丰富的照片以及24位图像。经压缩转换为JPG格式图像后,文件长度小得多,而且显示和打印效果仍能满足要求。
⑶BMP(位图)和TIFF(全名TaggedImageFileFormat)格式文件都很大,TIFF格式经压缩后容量比JPG大很多。
在GIF和JPG之间进行选择时,要求在质量可以接受的情况下使图像的容量变为最小。通常单调的颜色考虑使用GIF压缩(在WEB上使用很广泛,如各种图形按钮),照片比较合适用JPG处理,因为它们的阴影与色彩中包含有许多缓和的变化。
JPG、GIF格式的图像可以用WEB浏览器显示,常用的开发工具都支持WEB浏览器的控件处理;目前的扫描仪都能将图片扫描成24位的图像,因此,对具有连续色调(如色彩丰富的照片)或连续灰阶的24位图像可以采用JPG格式处理图像。
2.BMP图像如何转换成JPG格式
转换方法很多,可以采用各种图形处理软件转换,如PhotoShop、GraphicConverter、ACDsee等。这里介绍比较简单的两种方法:
⑴ 使用windows附件中的画图工具,将BMP文件打开,然后另存为JPEG格式。
⑵ 使用frontpage的“导入”(import)功能,将BMP文件“导入”,自动转换为JPG文件,然后将JPG文件“导出”(export)到指定目录。
3.JPG图像处理
现以一个实例介绍图像直接存入数据库及其显示、打印的方法,实例的环境为PB和ORACLE数据库。
⑴建立两个表:
职工信息表emp_info
列名类型长度内容
Emp_IDNumber4职工号
NameChar8姓名
SexChar1性别
...
表1
职工照片表emp_photo
列名类型长度内容
Emp_IDNumber4职工号
PhotoLongraw照片
表2
它们都以emp_ID作关键字,类型longraw可以用来存储照片数据。
⑵在应用系统主程序中连接数据库。定义全局变量integerg_emp_ID,表示要处理照片的职工号。新建一窗口w_photo,定义窗口的实例变量:
blobI_photo//存放照片数据
intfp//文件指针
⑶图像存储
将经过扫描、转换为JPG格式文件的职工照片存放在目录中。现在处理如何将照片存入职工照片表emp_photo中:
在窗口中建立一按钮cb_store,click事件程序编写如下:
stringls_path_filename,ls_filename
getfileopenname('选择照片文件',ls_path_filename,ls_filename,"JPG","JPGFiles(*.JPG),*.JPG")
ifls_filename=''thenreturn
fp=fileopen(ls_path_name,streammode!)//打开JPG照片文件
fileread(fp,i_photo)//照片数据存入blob类型I_photo变量中
fileclose(fp)//照片的JPG文件容量很小,只读取最多64KB的数据
//照片数据存入职工照片表中
updateblobemp_photosetphoto=:i_photowhereemp_ID=:g_emp_ID;
ifsqlca.sqlcode=-1then
ROLLBACK;
messagebox('出错信息','照片存储失败!')
else
commit;
endif
⑷图像显示
代写论文联系方式
联系QQ:904272800

联系信箱:904272800@qq.com

代写论文导航
客户、写手申请单
最新论文
热点论文