向《软件报》投稿的一篇文章 :VB 图片转换为Byte()和从Byte()中读取图片的捷径

没有试过给报社投稿,第一次,投了很久,但还是登出来了,虽然没有稿费,但却很快乐。

文章正文如下:

很多时候,我们需要将图片框中的图片保存到数据库,并从数据库中读取出来。虽然VB中的图片框支持直接绑定数据库存入图片和读取图片的方法,但是很多场合并不能使用绑定来解决问题。于是很多人在进行操作时,都使用了类似以下的方法: 读入图片到图片框后 ,再使用 Open "Picture" For Binary 来打开文件并读入为Byte() 数组。而从数据库读取图片格式时,则需要先将 字段数据读取到 Byte(),再使用 Open "Picture" For Binary 写入到磁盘上的临时文件再使用 LoadPicture 来读取临时文件。写入和读取都是多余的步骤,浪费了时间还留下了临时文件,在图片较大的情况下,对效率的影响相当严重。

是否有更快捷方法来保存图片框图片/读取Byte()中的图片呢?是的,在 VB 下有一个鲜为人知的对象: PropertyBag ,该对象原本是保存 ActiveX 中属性中的数据,并把它写到文件中去。但是我们却能利用它来达到读取图片框图片为Byte() 的目的,请看下列代码:

'假设Form 上已经存在Picture1的控件,并已经设置好图片

Dim PBag As New PropertyBag

Dim B() As Byte

PBag.WriteProperty "Picture", Picture1.Picture

'读取Picture1.Picture 图片并写到 Pbag 容器中

B = PBag.Contents '获取容器Byte 到 B() 数组中

'这时 B 就时我们想要获得的Byte数组

'读取 Byte() 数组内容到 Picture

PBag.Contents = B '指定 PBag容器的内容

'读取容器中的图片

Set Picture1.Picture = PBag.ReadProperty("Picture")

简单的几句代码就可以完成从图片到Byte() ,从Byte()到图片的转换。而且其保存和读取的格式都是使用了原始格式,即:如果你的图片框读入的是Jpg图片格式,则保存的Byte()数组也是该Jpg格式的数组,而非普通位图的数组,所以你也不用担心转换后的数组很没有压缩,很大。

其实:PropertyBag对象并不止于读取保存图片,它就象一个大麻袋,可以藏任何东西,并放到你想放的地方,具体藏什么 ,是由你决定的。你可以将任何对象保存为Byte(),并在需要的时候读出来

如将 ADO 的 RecordSet 对象保存起来,并在需要的时候读取等等……

                                                        乐天

                                                        2005-07-24 晚

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值