下载地址:http://zyl910vb.51.net/vb/wdzp/ZDIBop.htm对640*480的图像进行半透明合并
只比Bitblt慢3倍多
比AlphaBlend慢一倍
比GetPixel、SetPixelV算快93倍!不要怀疑,这的确是完全用VB写的!透明合并的的运算结果(我的CPU是K6-2 350):我的程序索引色透明 85毫秒
我的程序普通半透明 108毫秒
我的程序Alpha通道透明 162毫秒
FastGraphics的普通半透明 294毫秒Bitblt到窗体 24毫秒
AlphaBlend 58毫秒GetPixel、SetPixelV算 10.08秒对640*480的图像的亮度淡入淡出:
处理一帧只需要0.067秒
能达到每秒10帧的速度(CopyMemory、Bitblt都需要时间)
比那个内嵌汇编的亮度淡入淡出演示程序只慢了4帧(我的程序是每秒10帧,它是每秒14帧。那个程序的下载地址:http://www.dapha.net/vb/list.asp?id=1552)400*300图像的翻转、180度旋转、亮度、对比度、移动颜色、灰度
都是30毫秒左右解决(90度、270度旋转是60毫秒,因为需要重新分配空间)特别是垂直翻转,竟然是6毫秒!对于彩色度、浮雕效果,相对慢了一点,也就是50毫秒左右!
看来VB并没有比其他语言慢多少!
只比Bitblt慢3倍多
比AlphaBlend慢一倍
比GetPixel、SetPixelV算快93倍!不要怀疑,这的确是完全用VB写的!透明合并的的运算结果(我的CPU是K6-2 350):我的程序索引色透明 85毫秒
我的程序普通半透明 108毫秒
我的程序Alpha通道透明 162毫秒
FastGraphics的普通半透明 294毫秒Bitblt到窗体 24毫秒
AlphaBlend 58毫秒GetPixel、SetPixelV算 10.08秒对640*480的图像的亮度淡入淡出:
处理一帧只需要0.067秒
能达到每秒10帧的速度(CopyMemory、Bitblt都需要时间)
比那个内嵌汇编的亮度淡入淡出演示程序只慢了4帧(我的程序是每秒10帧,它是每秒14帧。那个程序的下载地址:http://www.dapha.net/vb/list.asp?id=1552)400*300图像的翻转、180度旋转、亮度、对比度、移动颜色、灰度
都是30毫秒左右解决(90度、270度旋转是60毫秒,因为需要重新分配空间)特别是垂直翻转,竟然是6毫秒!对于彩色度、浮雕效果,相对慢了一点,也就是50毫秒左右!
看来VB并没有比其他语言慢多少!
我不在 http://zyl910vb.51.net/vb/wdzp/ZDIBop.htm下载
可否把源码用电子邮件发给我吗?
电子邮件:[email protected]
我是一个VB菜鸟,真的好想得到你的帮助
拜托 拜托
[email protected]
谢谢
谢谢!!!
[email protected]
我不能在 http://zyl910vb.51.net/vb/wdzp/ZDIBop.htm下载
可否把源码用电子邮件发给我,好吗?
电子邮件:[email protected]
我是一个VB菜鸟,真的好想得到你的帮助
拜托 拜托
实在上不去呀!!!!!
实在上不去呀!!!!!
[email protected]
小弟已经按你所教的方法“右键……”都不能下载 还请你把源码用电子邮件发给我,好吗?
电子邮件:[email protected]
我是一个VB菜鸟,真的好想得到你的帮助 拜托 拜托
良芳
对于大规模的循环运算速度很慢我这里是指编译成exe后的速度
我这里(K6-2 350、128M内存、)锐化400*300的图片只用了0.060秒同时我只对 半透明合并、亮度调整、对比度调整、颜色度调整、增减颜色 做好了优化
那93倍只是半透明合并所差的速度
由于没找到好的 模糊、锐化 公式
所以没有对它进行优化
可我是邮件发送不了
上面的所有地址
我这里FoxMail都报告“找不到邮件服务器”所以才上传
可是又这样
有谁知道哪里有免费的个人主页空间
要支持Ftp上传
你好!
如果“邮件发送不了……”
请你把源码放入我的知信息中
拜托 拜托
良芳
[email protected]
你是那里的SMTP服务器?是不是需要验证?
但几率不足1/10
我把程序传到我的主页上了(主页上没做连接)如果大家需要,可以去:http://nomey.myetang.com/zdibop.rar下载(重复)如果大家需要,可以去:http://nomey.myetang.com/zdibop.rar下载如果大家需要,可以去:http://nomey.myetang.com/zdibop.rar下载
怎么会不可以下呢?我刚下完.看看先!
记得保存参数lplpVoid的值,它是DIB位图数据的地址
用Bitblt把图像复制过去DIB问题格式
DIB位图的每一行所占字节数必须是4的
而且它采用逆序存储,即 第一行数据其实是图片的最后一行对于24位DIB
每个像素占3个字节
第一个字节是B值(蓝色分量)
第二个字节是G值(绿色分量)
第三个字节是R值(红色分量)一个3*3的24位DIB(FF表示一个字节,|表示分割一个双字——DWORD,即 4个字节,括号是坐标)在内存中的存放形式:
第一行 FF FF FF FF | FF FF FF FF | FF FF FF FF |
(2,0)的/ \(2,1)的-/ \(2,2)的-/ \-未用-/
第二行 FF FF FF FF | FF FF FF FF | FF FF FF FF |
(1,0)的/ \(1,1)的-/ \(1,2)的-/ \-未用-/
第三行 FF FF FF FF | FF FF FF FF | FF FF FF FF |
(0,0)的/ \(0,1)的-/ \(0,2)的-/ \-未用-/
对于32位DIB
每个像素占4个字节
第一个字节是B值(蓝色分量)
第二个字节是G值(绿色分量)
第三个字节是R值(红色分量)
第四个字节保留未用,你可以把它作为Alpha值由于它每个像素占4个字节,所以不要考虑每一行所占字节数必须是4的
比如一个3*3的32位DIB在内存中的存放形式:
第一行 FF FF FF FF | FF FF FF FF | FF FF FF FF |
\(2,0)的值/ \(2,1)的值-/ \(2,2)的值-/
第二行 FF FF FF FF | FF FF FF FF | FF FF FF FF |
\(1,0)的值/ \(1,1)的值-/ \(1,2)的值-/
第三行 FF FF FF FF | FF FF FF FF | FF FF FF FF |
\(0,0)的值/ \(0,1)的值-/ \(0,2)的值-/
把数据进行操作的方法
可以用GetBitmapBits(Call GetBitmapBits(DIB位图的句柄, DIB位图所占字节, 一个数组(最小下标)'数组必须事先分配好空间))
也可以修改一个数组的SafeArray结构,使它的数据指针指向DIB位图但我觉得这两种方法都不够快,所以我想处理一种模拟二级指针的方法
使一个只有一个元素的Long型数组的数据指针指向另一个只有一个元素的Long型数组的数据指针地址
只要修改“一个只有一个元素的Long型数组”的值,就可以修改“另一个只有一个元素的Long型数组”的数据地址
这样可以减少VB自身计算数组元地址时的乘法运算
这种方法比数组法快一倍多对于VB模拟指针的方法、SafeArray结构的解释,可以看AdamBear的文章:http://www.csdn.net/develop/author/netauthor/AdamBear/
对于24位色DIB的处理方法(我那个程序是32位色的),可参考:
http://www.21code.com/codebase/?pos=down&id=1754
源码类型: VisualBasic源码-图形方面
上传时间: 2001-10-28
下载次数: 101
源码大小: 83 KB 源码评价: 源码简介:快速图形处理程序,有几种常见的处理效果,但是速度都比其他示例快!
http://zyl910vb.51.net/vb/map/ZDIBop.htm
用FlashGet或IE自身的下载功能(右键,目标另存为)下载后注意把*.rar.jpg改名成*.rar
如果还是不能下载的话
用这个地址:http://nomey.myetang.com/zdibop.rar
我也打不开,要一份
' [email protected]
'
'first release: October 8, 2001 at 1:15 am
这是gonchuki在程序开头的注释!