在VB中如何将picturebox中的图片保存到字节数组中?

dusj 2000-05-28 11:27:00
已经在picturebox中显示出了一幅图像,如果将这幅图的像素信息放到一个自定义的字节数组中?
我不想用savepicture保存,然后再读出的方法,因为用磁盘交换太慢,要求速度快一些.
是不是要得到picturebox的hdc中的位图信息,再用memorycopy函数解决呢?可是hdc中的位图信息在哪里呢?
thank you.
my Email: dusj@263.net
...全文
360 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Un1 2000-06-07
  • 打赏
  • 举报
回复
其实也不是很慢。
Un1 2000-06-07
  • 打赏
  • 举报
回复

看看这两个函数:

Private Function SaveImage(Image As IPictureDisp) As Byte()
SavePicture Image, confile

ReDim SaveImage(FileLen(confile) - 1)

Dim l As Long
l = FreeFile()

Open confile For Binary Access Read As #l
Get #l, , SaveImage
Close #l

Kill confile
End Function

Private Function LoadImage(Data() As Byte) As IPictureDisp
Dim l As Long
l = FreeFile()
Open confile For Binary Access Write As #l
Put #l, , Data
Close #l

Set LoadImage = LoadPicture(confile)

Kill confile
End Function

sanhan 2000-05-28
  • 打赏
  • 举报
回复
用GetDIBits,其中的hbmp用CreateCompatibleBitmap得到,
这两个都是Win32SDK的函数。
qyx888 2000-05-28
  • 打赏
  • 举报
回复
我想应该使用Api函数------
SetBitmapBits(hbmp,cbits,lpvbits)
hbitmap hbmp 位图句柄
long cbits 位图数组内的字节数
fat * lpvbits 具有位图数组的地址
此处hbmp不是hdc
此函数,我未用过,我是在一本vc的书上发现它的.

要不利用picturebox处理图象的象素,可利用api函数来处理,但需要掌握一些相关的知识,你有兴趣可Email给我,我可介绍你几本参考书.我已就"图象不用picturebox处理而用其他方法处理"的问题处理头疼了近两个月了,最近总算有初步的解决之道了.看来,你也在研究图象处理,我们可以共同研究这个问题.
Email :hareqian@sina.com
  VB6本身只支持16色(4位)和256色(8位)的图标,这种图标只是早期的Windows版本所采用的 图标格式标准。现在各种高清真彩色(32位带Alpha通道、24位不带Alpha通道)早已经很流行 并且普遍使用了,但在VB6却不能直接支持、使用。即使想把这种真彩色图标加入图标资源、 或者是把它加入ImageList控件,也会被提示“无效图片”而不能加入。记得论坛曾经有某 位高人说过,VB6的Form是支持真彩色图标的,可以给窗体设置真彩色图标。   昨天上午我试了一下,新建一个标准EXE工程,然后随意找了一个高清真彩图标文件,给工 程的Form1设置Icon属性,成功了……… 但是,感觉它显示的图标有点怪异,总觉得有些不对 劲呢…… 于是,我把这个高清图标文件32×32和16×16这两种规格的真彩色图标单独提取 出来,分别保存为一个.ico格式的文件,然后再用这两个图标文件来给它设置Icon属性。果然, 这两个文件在操作时VB6都提示“无效图片”!!!这就说明:VB6是不支持真彩色图标的。最 开始时“能设置成功”,只不过是因为它从图标组找到了256色的、它能支持的格式罢了。   闲话不多说了,这个模块进行了简单的封装,提供了一些基础的操作功能。源码有比较 详细的注释,使用起来应该是很简单的,就不再写什么“应用示例代码”了。首先要调用接口 函数装载图标,从图标文件加载就调用LoadFromFile(),从字节数组加载就调用LoadData()。 加载成功后,即可调用其它接口来使用图标对象了,比如用GDI方式把图标画到窗口内、或者画 到某个PictureBox上、给自己的窗口或别的程序窗口设置一个真彩色图标等。虽然在“资源” 不能以“图标”的方式把真彩图标加入,但是,却可以按“自定义资源”的方式把图标文件 装入,使用时读取出对应的资源数据,然后调用函数LoadFromData()进行加载。加载成功就可 以使用里面的真彩色图标了。   这个模块只提供了一些基本的功能,如果有需要可以自己再进行扩展。还有就是没有进行 异常处理,因此要求用来加载的文件必须是正确的图标文件、并且可以读取;数组数据则必须 是合法的图标文件数据。否则可能会引起异常,你也可以修改代码进行异常捕获处理。

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧