电警卡口项目涉及大批量的图片文件处理,相关应用开发实践如下
1. 图片扫描
利用 TSearchRec 和 FindFirst(), FindNext() 扫描指定图片目录时,速度慢,在不同的目录切换时要通过递归实现。
解决之道:利用windows 命令行程序 tree.com 来实现目录(包含子目录)及文件快速列表,然后处理生成的列表文件。
tree e:\原始图片 /f /a > pictlist.txt
2. 图片合成、压缩处理
合成和压缩无非就是 bmp, jpeg 等文件的处理和文字叠加,往往封装在线程(TThread)中实现。
在线程(TThread)中处理 TBitmap 时,注意要加上 Bitmap.Canvas.Lock 和 Bitmap.Canvas.Unlock ,要不然会出现随机的 Bitmap 操作错误。
3. Oracle 数据批量提交
循环扫描批量提交图片记录数据,每1000条或扫描结束后提交
sqlldr user/password@orcl control=picture.ctrl
/* 未完待续 */