用VB写高效的图像处理程序 1.0β一文太棒啦,不过显示没问题了,我要读取现有图片进行运算处理该怎么做呢?
使用GetPixel必须先把图片放到picturebox控件中然后在读出需要的像素点的rgb,感觉十分有问题,有什么更好些的方法吗?比如替代GetPixel的api,或者不需要picturebox控件,直接从文件中读出?
使用GetPixel必须先把图片放到picturebox控件中然后在读出需要的像素点的rgb,感觉十分有问题,有什么更好些的方法吗?比如替代GetPixel的api,或者不需要picturebox控件,直接从文件中读出?
解决方案 »
- 如何编写这样的子程序-关于读取INI文件的内容
- combobox下拉列表的内容长度问题
- 用VB6读取系统已安装的输入法时,朝鲜文的输入法描述读出后在vb中不能正确显示?
- 垃圾问题请教:用控件如何循环播放
- 高难度问题,进来的有分
- 求助关于MAPI发邮件接收邮件的问题.....请教高手解答.......
- 连接串问题,答者有分
- 高手请教?如果在excel的用户窗体中加入datagrid控件?
- vb6 + 水晶报表9 , 如何让代码设定打印报表的打印机,而不是人工选择? 因为可能要在非默认的打印机上打印.
- 怎样处理SQL字符串中的操作符例如:我要插入一个字符串'kkk|',会出错,谢谢!!!
- 大家好,我的VB6为什么只能使用普通的控件,当在控件工具箱击右键添加组时出现错误?
- 大家谈谈用ACCESS做数据库,VB作前台,多用户登录采用什么方法比较安全?分不够可以再给。
2.利用DIBSection,可以直接用BitBlt赋值
int GetDIBits(
HDC hDC, // handle to device context
HBITMAP hbmp, // handle to bitmap
UINT uStartScan, // first scan line to set in destination bitmap
UINT cScanLines, // number of scan lines to copy
LPVOID lpvBits, // address of array for bitmap bits
LPBITMAPINFO lpbmi,// address of structure with bitmap data
UINT uUsage // RGB or palette index
);
VB声明:
Declare Function GetDIBits Lib "gdi32" (ByVal hDC As Long, ByVal hbmp As Long, ByVal uStartScan As Long, ByVal cScanLines As Long, lpvBits As Any, lpbmi As Any, ByVal uUsage As Long) As Long
说明:
该函数利用申请到的内存,由GDI位图得到DIB位图数据。通过该函数,可以对DIB的格式进行控制,可以制定颜色的位数,而且可以指定是否进行压缩。如果采用了压缩方式,则必须调用该函数两次,一次为了得到所需内存,另外一次为了得到位图数据
返回值:
执行成功则返回扫描线的数量,零表示失败。会设置GetLastError
参数:
hDC 定义了与设备有关位图hBitmap的配置信息的一个设备场景的句柄
hbmp 源位图的句柄
uStartScan 欲复制到DIB中的第一条扫描线的编号
cScanLines 欲复制的扫描线数量
lpvBits 指向一个缓冲区的指针。这个缓冲区包含了以DIB格式描述的位图数据;这种格式是由lpbmi指定的
lpbmi 指向BITMAPINFO(为兼容BMP4/5而声明成Any).对DIB的格式及颜色进行说明的一个结构。在BITMAPINFOHEADER结构中,从biSize到biCompression之间的所有字段都必须初始化
uUsage DIB_PAL_COLORS 颜色表是一个整数数组,其中包含了与目前选入hDC设备场景的调色板相关的索引
DIB_RGB_COLORS 颜色表包含了RGB颜色
至于文件读写,基本上放弃了VB的LoadPicture(只有jpg的让它读)
是自己根据图像文件格式写读写程序
http://www.fantasiasoft.net/zyl910/zSaveGIF.zip
以前为ThirdApple写的GIF读写程序,用到了GetDIBits
http://www.fantasiasoft.net/Zyl910/DIBClass.zip
正在写的图像处理基础模块
对GIF全面支持(zSaveGIF只支持8位的,而DIBClass还支持1~7位)
现在正在写PCX读写模块(PCX读取部分已经写好,帮忙测试一下)
作 者: boyzhang (张郎)
等 级:
信 誉 值: 100
所属论坛: VB API
问题点数: 50
回复次数: 9
发表时间: 2003-8-10 21:10:23
已经得到了一个设备的Hdc,怎么才能对其进行DIB处理呢?就是说,怎么才能把HDC中的内容复制到二进制数组中呢?哎,这两天看ZYL910的例子头都看大了,他的例子太复杂了不好看懂,那篇用VB写高效的图像处理程序中的例子ImgTest又没有涉及这些内容,刚接触这方面的知识,还望大家多多帮助哟!
http://expert.csdn.net/Expert/topic/2139/2139708.xml?temp=.9661524
主 题: ▁▂▃▄▅▆▇█ 申请在VB区增加“数字图像与图形处理/多媒体/文件格式”版 ▆▅▄▃▂▁
作 者: zyl910 (910:分儿,我又来了!)
等 级:
信 誉 值: 99
所属论坛: 社区支持 新版申请
问题点数: 300
回复次数: 1
发表时间: 2003-08-13 07:39:44
申请在VB区增加“数字图像与图形处理/多媒体/文件格式”版VB区关于这方面的帖子还是有很多的
而且 我(zyl910) 和 thirdapple(陨落雕) 都能回答问题