C#数字图像处理基础
Bitmap类,BitmapData类和Graphics类是C#图像处理中最重要的3个类,如果要用C#进行图像处理,就一定要掌握它们.
1Bitmap类
Bitmap对象封闭了GDI+中的一个位图,此位图由图形图像及其属性的像素数据组成.因此Bitmap是用于处理由像素数据定义的图像的对象.该类的主要方法和属性如下:
GetPixel方法和SetPixel方法:获取和设置一个图像的指定像素的颜色
PixelFormat属性:返回图像的像素格式
Palette属性:获取和或设置图像所使用的颜色调色板
Height属性和Width属性:返回图像的高度和宽度
LockBits方法和UnlockBits方法:分别锁定和解锁系统内在中的位图像素.
public BitmapData lockBits(Rectangle rect ,ImageLockMode flags,PixelFormat format);
ImageLockMode 可选择:
ReadOnly:位图的锁定部分只用于读操作
ReadWrite:位图的锁定部分用于读操作和写操作
UserInputBuffer:读取和定入像素数据的缓存由用户分配
WriteOnly:位图的锁定部分只用于写操作
PixelFormat可选择:
Format1bppIndexed:每个像素1位,使用索引颜色,因此颜色表中有两种颜色
Format4bppIndexed:每个像素4位,使用索引颜色
Format8bppIndexed:每个像素8位,使用索引颜色
Format16bppIndexed:每个像素16位,共指定65536种灰色调
Format24bppRgb:每个像素24位,R,G,B分别分别使用8位,它们的顺序是B,G,R
Format32bppArgb:每个像素32位,Alpha,R,G,B分量分别使用8位,这是默认的GDI+颜色组合
Format64bppArgb:每个像素64位,Alpha,R,G,B分量分别使用16位
Indexed: 索引颜色值,这些值是系统颜色的索引,而不是单个颜色值
public void UnlockBits(BitmapData bitmapdata);
2BitmapData类
BitmapData对象指定了位图的属性:
Height属性:被锁定位图的高度
Width属性:被锁定位图的宽度
PixelFormat属性:数据的实际像素格式
Scan0属性:被锁定数组的首字节地址.如果整个图像被锁定,则是图像的第一个字节地址
Stride属性:步幅,也称为扫描宽度(注意是4的倍数)
3Graphics类
Graphics类定义了绘制和填充图形对象的方法和属性.以后在例子中讲解.
示例一:
使用了OpenFileDialog,SaveFileDialog,Graphics类.
我的运行环境为WIN7 64+VS2010
示例一结果:
图像显示
示例下载地址:C#数字图像处理示例一