C# 图像处理(二)—— 黑白效果
今天把最近所学到的规范编程的知识运用到以前的一些小作品上面,重新做了一下以前的一个数字图像处理的程序,现在说一下关于图像处理的一些了解吧,把“经验”两个字用到这里好像不太合适。
我是用C#来完成这个作品的。
先说一下怎样去打开一个图片,把图片的内容(像素)之类的读进程序里面,这里用到了openFileDialog、Panel、pictureBox三个控件联合完成的。
先用OpenFileDialog类里面的一个Filter属性来指定打开文件的类型,
openFileDialog.Filter = "bmp文件(*.bmp)|*.bmp|gif文件(*.gif)|*.gif|jpg文件(*.jpg)|*.jpg|png文件(*.png)|*.png|tif文件(*.tif)|*.tif|wmf文件(*.wmf)|*.wmf";
其实这里我是看了msdn的,不过对它的设置也看了一阵子才明白如何填写等号右边的内容,主要是每两项为一个主体,例如 bmp文件(*.bmp)|*.bmp为一个主体(也就是格式),gif文件(*.gif)|*.gif为一个主体,所以说上面那个语句就设置了只能打开 bmp、gif、jpg、png、tif、wmf这六种格式的图片。因为我看到在C#里图片的转换好像只能够转换成这六种格式,所以我认为它很方便地支持 这六种格式的图片的操作,当然,这只是举个例子,所以也没有必要去深究其它类型的东西。
再说一下Panel、pictureBox这两个控件在这里是如何运用的,先把Panel拖动到.cs[设计]里面,再把一个pictureBox拖到Panel的上面,接着就有以下的代码了,
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
//this.openFileDialog.FileName是图片的绝对路径
Image pic = Image.FromFile(this.openFileDialog.FileName);
this.pictureBox.Width =
pic.Width;//显示图片的控件的长度
this.pictureBox.Height =
pic.Height;//显示图片的控件的宽度
//显示图片
this.pictureBox.Image =
System.Drawing.Bitmap.FromFile(this.openFileDialog.FileName);
}
这样就可以把想打开的图片呈现到窗体里面了。
再面对一幅要处理成黑白效果的图片,我为此写了以下一个函数,
/// <summary>
/// 将图片转为为黑白图片
/// </summary>
/// <param name="mybt">要进行处理的图片</param>
/// <param name="width">图片的长度</param>
/// <param name="height">图片的高度</param>
/// <returns>已经被处理后的黑白图片</returns>
public Bitmap BWPic(Bitmap mybm, int width, int height)
{
Bitmap bm = new Bitmap(width, height);//初始化一个Bitmap对象,用来记录处理后的图片
int x, y, result;//x,y是循环次数,result是记录处理后的像素值
Color pixel;
for (x = 0; x < width; x++)
{
for (y = 0; y < height; y++)
{
pixel = mybm.GetPixel(x, y);//获取当前坐标的像素值
result = (pixel.R + pixel.G + pixel.B) / 3;//取红绿蓝三色的平均值
//绘图,把处理后的值赋值到刚才定义的bm对象里面
bm.SetPixel(x, y, Color.FromArgb(result, result, result));
}
}
return bm;//返回黑白图片
}
最后利用一个pictureBox控件把处理后的图片呈现出来,利用的是下面这个语句,
int width = this.pictureBox.Width;//图片容器的长度
int height = this.pictureBox.Height;//图片容器的宽度
this.pictureBox.Image = pix.BWPic((Bitmap)this.pictureBox.Image, width, height);//处理图片
浙公网安备 33010602011771号