vb.net 教程 5-14 图像处理之内存处理基础1
来源:互联网 发布:windows中命令Tracert 编辑:程序博客网 时间:2024/06/07 09:07
之前我已经介绍了利用图片的像素点来做图像处理,这篇开始我要采取更有效率的处理方式,也就是内存处理。
为了将图像数据锁定到内存,从而换来更高处理效率,我们需要使用Bitmap.LockBits() 方法获得一个BitmapData 类,
使用完毕内存后使用Bitmap.UnlockBits(BitmapData) 方法解锁占用的内存。
BitmapData 类中包含了锁定到内存的图像的一些特性,包括的属性有(来自Msdn):
Height 获取或设置 Bitmap 对象的像素高度。 有时也称作扫描行数。
PixelFormat 获取或设置返回此 BitmapData 对象的 Bitmap 对象中像素信息的格式。
Scan0 获取或设置位图中第一个像素数据的地址。 它也可以看成是位图中的第一个扫描行。
Stride 获取或设置 Bitmap 对象的跨距宽度(也称为扫描宽度)。
Width 获取或设置 Bitmap 对象的像素宽度。 这也可以看作是一个扫描行中的像素数。
PixelFormat 获取或设置返回此 BitmapData 对象的 Bitmap 对象中像素信息的格式。
Scan0 获取或设置位图中第一个像素数据的地址。 它也可以看成是位图中的第一个扫描行。
Stride 获取或设置 Bitmap 对象的跨距宽度(也称为扫描宽度)。
Width 获取或设置 Bitmap 对象的像素宽度。 这也可以看作是一个扫描行中的像素数。
我们先来看看Bitmap.LockBits()方法:
Public Function LockBits ( _
rect As Rectangle, _
rect As Rectangle, _
flags As ImageLockMode, _
format As PixelFormat _
) As BitmapData
format As PixelFormat _
) As BitmapData
其中
rect:指明了我们要锁定的图片的矩形的部分,如果要处理整个图片,那么rect=new rectangle(0,0,picture.width,picture.height)
flags:这是一个ImageLockMode 枚举,指定了图像锁定部分的读写级别,通常源图片使用ReadOnly,目标图片使用WriteOnly。
format:这是一个PixelFormat 枚举,指定此 Bitmap 的数据格式,包括
Format4bppIndexed 指定格式为每像素 4 位而且已创建索引。
Format8bppIndexed 指定格式为每像素 8 位而且已创建索引。 因此颜色表中有 256 种颜色。
Format16bppRgb555 指定格式为每像素 16 位;红色、绿色和蓝色分量各使用 5 位。 剩余的 1 位未使用。
Format24bppRgb 指定格式为每像素 24 位;红色、绿色和蓝色分量各使用 8 位。
Format8bppIndexed 指定格式为每像素 8 位而且已创建索引。 因此颜色表中有 256 种颜色。
Format16bppRgb555 指定格式为每像素 16 位;红色、绿色和蓝色分量各使用 5 位。 剩余的 1 位未使用。
Format24bppRgb 指定格式为每像素 24 位;红色、绿色和蓝色分量各使用 8 位。
Format32bppArgb 指定格式为每像素 32 位;alpha、红色、绿色和蓝色分量各使用 8 位。
……
需要注意的是,采用的数据格式会影响我们对图像数据的处理,通常情况下,我选用的是PixelFormat.Format24bppRgb,在之后的教程将以此格式举例。
由于.net平台下C#和vb.NET很相似,本文也可以为C#爱好者提供参考。
学习更多vb.net知识,请参看vb.net 教程 目录
0 0
- vb.net 教程 5-14 图像处理之内存处理基础1
- vb.net 教程 5-14 图像处理之内存处理基础5
- vb.net 教程 5-14 图像处理之内存处理基础2
- vb.net 教程 5-14 图像处理之内存处理基础3
- vb.net 教程 5-14 图像处理之内存处理基础4
- vb.net 教程 5-14 图像处理之内存处理基础6
- vb.net 教程 5-15 图像处理之内存处理1
- vb.net 教程 5-15 图像处理之内存处理 5
- vb.net 教程 5-15 图像处理之内存处理2
- vb.net 教程 5-15 图像处理之内存处理 3
- vb.net 教程 5-15 图像处理之内存处理 4
- vb.net 教程 5-15 图像处理之内存处理6
- vb.net 教程 5-13 图像处理之像素处理1
- vb.net 教程 5-13 图像处理之像素处理 8-1
- [VB.NET]VB 图像处理
- vb.net 教程 5-16 图像处理之ImageAttributes 类1 伽玛、阈值和颜色替换
- vb.net 教程 5-16 图像处理之ImageAttributes 类2 颜色矩阵1
- vb.net 教程 5-13 图像处理之像素处理 5
- 第九章练习题
- Linux基础之五——文件管理命令
- C语言编写注释转换问题
- springMVC访问静态资源
- android.util.Singleton 源码了解
- vb.net 教程 5-14 图像处理之内存处理基础1
- js中,一些非致命性错误会影响程序正常执行,如何忽略这些错误?
- 不正经运维狗的文档10
- Atitit xml框架类库选型 attilax总结
- Nth Digit
- 装饰模式
- myeclipse中项目名有红叉,但项目中文件没有报错的解决方法
- 修改方法后Tomcat不用重启
- 图形函数库curses