当前位置:文档之家› 将数据库中保存的图片缩小的一种方法

将数据库中保存的图片缩小的一种方法

在数据库的日常维护中,经常遇到一些小问题需要处理,比如图片的存储,说起来也是我当初程序设计考虑不全。

数据库: SQLServer 2000
程序:Delphi
图片存放字段类型: BLOB
客户只存了不到1000张图片,结果数据库存放空间现在是相当的大了, 因客户端用户上传图片时,小的几M,大的几十M,主要是数码相机照的,最开始时,我的软件没有处理大小, 最近才缩小处理后再保存. 而现在资料库文件就是40多G了
带来问题:查询带图片的功能时很慢,每次备份时很慢,且备份文件也大。

以后如果继续增大……
解决方法:改变数据库中图片的大小, 在保证1024*768的清晰程度下,尽可能小的改变资料库容量。

使用中间图片c:\tmp.jpg取出数据库的图形,按比例缩小,然后保存在数据库中,再收缩数据库。

具体过程:
1.将数据库中图片取出用TADOBlobStream处理。

2.用函数ZoomJpgSize(iLen,iWid,picBlob)等比例缩小。

3.用TADOBlobStream将图片保存回数据库。

4.收缩数据库DBCC SHINKDATABASE('bb001',TRUNCATEONLY)
具体核心代码见附件。

test_ZoomJpg.rar
最后问题得以解决. 最后文件大小从40G下降到了不到1G。

说明:
1.源程序可以继续改进,TADOBlobStream流是否可以转为二进制直接压缩。

欢迎交流15196670@
2.源程序用c:\tmp.jpg处理几M的图片时速度慢。

3.源程序图片处理可以继续加强,如放大,缩小,导出本地文件,旋转等功能。

相关主题