
用delphi开发interbase图像数据库应用.pdf
2页2 0 0 1 年 增刊 工 程 图 学 学 报 J OU R NAL OF E NGI NE E RI NG GRAP HI CS 用D e l p h i 开发 I n t e r B a s e 图 像数据库应用 赞 南 大 学 计 算 机 科 学 系黄 穗 摘 要 本文 探讨 用D e lp h i 开 发 基于In t e 旧二 的图 像数 据序 应用. 介 绍建 立以B L O B 字 段类 型为 核心的图 像数据库的 方 法, 并肴 重 分 析D e lp h i 的 流处 理方法 和T J P E G I M A G E 类在实 现多 种格式图 像数据的录 入、 显示、 转移等功能的办法 和问 题. B L O B类型, T J P E G I M A G E类异常处理 0引言 随着计算机应用的发展,图像数据日 益增多由 于图 像数据存在长度差异大、 编码 种类多等特点,在传统的关系型数据库系统中无 法处理近几年里以 N F = 模型为代表的 扩展关系数据库系统发展迅速,一方面,它所引 入的抽象数据类型使得用户能够定义和 表示新的数据类型,另一方面它能够充分发挥传统关系数据库在规范数据处 理方面的特 长。
本文讨论以I n t e r B a s e 的B L O B 类型为 基础, 通过D e l p h i 编程实现不定长、不 定编码 格式图像及相关数据的录入、显示、 转移等基本功能 1建立 I n t e r B a s e 图像数据库 在建立 I n t e r B a s e 数据库时 应注意以 下几个问 题:首 先, I n t e r B a s e 不支持更改 表结构 的 操 作因 此, 在建 表时 必 须 仔细 考虑 各 传统字 段需 要的宽 度; 其次, 创 建 库文 件(* 名 曲 ) 时 有 几 个 参 数 可 选 m , 如p a g e s iz e , le n g t h , 它 们 会 直 接 影 响 库 的 规 模 和 存 取 效 率; 第 三 , 在建立 B L O B类型字段时, 对段长度要有所考虑, 默认的段长度是 8 0字 节, 这是一个 I n t e r B a s e的内 部缓冲区大小, 将决 定每次读写 B L O B字段的 数据量,如果能 根据数据尺 寸的平 均值适当 选择段长度,则可以 提高读写数据的效率 2图像数据的录入、显示与转移 2 . t图像录入 在D e l p hi 程序中 实 现图 像数 据 录 入B L O B字 段可以 用三 种 方式,一 是 直 接 从 文件 读 入,二是用流方法,三是通过剪切板。
如果是J P E G格式的图 像,则只能采用文件或流的 办法来录入文件方式最简捷, 用L o a d F r o m F i l e 过程将图像文件直接存入B L O B字段. 2 . 2图像显示 D e lp h i 的图 像 控件能 够直 接 显 示b ur p , ic o , w m f 和e m f 格式, 对J P E G格式则 要用 工程 图 学 学 报 T j p e g I m a g e l2 t类进行间 接处 理 下面 介绍 一 种利 用T J p e g l m a g e 类和 异常处 理的方法,自 动分离J P E G与B M P , 用T I m a g e 控件显 示两 种格式图 像 下面是部分实现程序: P s := T b l o b S 6 r e a m . C r e a t e ( ta b l e l .f i e J d b y n a m e ( ` p ic s ) a s t b l o b fi e l d ) ,b m r e a d ) J I流 T ry J p e g 1 : = T j p e g i m a g e . C r e a t e ; / 4 1 建J P E G 类的实 例 J p e g l .lo a d f r o m s tr e a m ( p s ) ; / l 将P I C S 字 段中 的图 像 读入B L O B 流P S 中 I m a g e l .P i c tu r e .a s s ig n 0 p e g l ) ;I I 将J P E G 类 转 换的 位图 赋 予图 像 显示 控件I m a g e l P s .fr e e ; J p e g l .fr e e ; ll * 放 流空间 和J P E G 实 例 空间 E x c e p t O n E in v a l id G r a p h i c d o I! 对 位图 类 图 像J P E G 类 产 生E l n v a lid G r a p h ic 异 常 P s := T b l o b s t r e a m . C re a t e ( t a b l e l .f i e l d b y n a m e ( ` p i c s ) a s t b l o b 6 e l d ) , b m r e a d ) P i c b m p := T b i tm a p .C r e a te . 1 1 创建位图 实 例 P ic b m p .lo a d fr o m s t re a m ( p s V P 44 位图 数 据 赋 予 位图 实 例 I m a g e l .P i c t u r e .a s s ig n ( p ic b m p ) ;l l将位图 图 像 送图 像显 示 控 件I m a g e l P s f r e e ;ll 释 放位图 实 例 图像转移 图像的转移可将库中的图像转送其它工具处理或另 存为文件。
主要有两种方法,一 细23 是将当前显示的图像转至剪切板,然后再由 其它 工具通过粘贴 进行处理这种方法编程 与操作都很简单, 还能充分利用专业图 像处 理工具的 特长, 但是 尽量不要让J P E G数据反 复压缩和解压,否则会损失原 始数据中的 信息 另一种方法是利用 B L O B流和文件流的 复制方法t 9 ) ,即录入的反过程, 先将图像从 数据库中读入一个 B L O B流, 然后再将它复 制到一个文件流, 由 文件流完成转存 这种方法编程稍复杂一些, 但不经过T J P E G I I A A G E 类处理,能够保证数据库中的图像数据不变质 3结论 本文 探讨了 一种基于I n te r B a s e 的B L O B字 段 和D e l p h i 编程的图 像 应 用开 发方法, 介 绍了 建立图像数据库和实现多 种格式图 像数据录入、显示、 转移等 功能的具体办法 参 考 文 献 I n t e r B a s e 5 D a t a D e fi n i t i o n G u i d e I n t e r B a s e S o ft w a r e C o r p o r a t i o n 1 9 9 8 D e l p h i H e l p f o r B o r l a n d D e l p h i E n t e r p r i s e 5 .0 , I n p r i s e C o r p o r a t i o n 1 9 9 9 岳庆生, 版主 答疑- D e lp h i 高 级编程 技巧, 清 华大 学出 版社, 2 0 0 0 年4 月, P 8 2 1气乙勺﹂ 。
