vb.net中彩色图像数据的快速获取

         一直以来,图像处理都是VB的禁区,主要的原因可能是因为她没有指针,而图像的数据量通常都很大。其实,只要有正确的方法,VB同样可以写出高效而又快速的图像处理程序的。

        我并不是学图像处理这方面的。可以说,我的专业和图像毫不占边,但因老板项目的需要,自学了一些图形图像学方面的知识。网络上图像方面大部分的代码都是用VC写的,对于我这个对C系列语言不感冒的人来说实在是太痛苦了,好在关键的算法部分还能够马马乎乎的看懂,这样在学习中也改写了不少代码,这里想共享一些常用的算法供大家研究。

       要处理一个图像,首先当然要获得该图像的像素值,常见很多人直接用两个循环中调用GetPixel 来得到数据(最初我也是),这个过程是相当耗时,在处理完毕后又调用SetPixel 来更新图像,而SetPixel呢,要进行坐标系转化、剪裁区域判断、将颜色匹配为设备支持的最接近的,最后还要根据不同的颜色格式寻址、为将颜色写入其所在位进行位运算,速度可想而知了。

       在VB6.0,为了快速得到一副图像的数据,通常需要调用API函数GetDIBits,而在调用该函数前要做大量的准备工作(API声明、BITMAPINFO信息设置等),也有点烦躁,但在.net中提供了BitmapData类,再结合Marshal类的Copy方法可以快速地复制图像数据到一维数组中。

        因为我的项目中只对彩色图像进行处理,而且不涉及到特效,所以没有考虑到Alpha通道。

       以下是图像的读取和保存部分的代码:

Imports System
Imports System.Drawing
Imports System.Drawing.Ima

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值