c# winform 把彩色图片转换为灰色的图片,变灰,灰度图片,速度很快,safe,unsafe把彩色图片转换为灰色的图片,直接用.net接口遍历每个像素点转换的效率非常低,800K的图片65万像素我的电脑要用5分钟,而用了unsafe,速度提高了几千倍,同样的图片只用了0.几秒附一个常用的遍历像素点转换的代码构造函数
C#代码publicTphc(){InitializeComponent();this.pictureBox1.ImageLocation="F:\\黑色头发.jpg";}按钮单击事件
C#代码PRivatevoidbutton3_Click(objectsender,EventArgse){intHeight=this.pictureBox1.Image.Height;intWidth=this.pictureBox1.Image.Width;Bitmapbitmap=newBitmap(Width,Height);BitmapMyBitmap=(Bitmap)this.pictureBox1.Image;Colorpixel;for(intx=0;x<Width;x++)for(inty=0;y<Height;y++){pixel=MyBitmap.GetPixel(x,y);intr,g,b,Result=0;r=pixel.R;g=pixel.G;b=pixel.B;//实例程序以加权平均值法产生黑白图像intiType=2;switch(iType){case0://平均值法Result=((r+g+b)/3);
break;case1://最大值法Result=r>g?r:g;Result=Result>b?Result:b;
break;case2://加权平均值法Result=((int)(0.7*r)+(int)(0.2*g)+(int)(0.1*b));
break;}bitmap.SetPixel(x,y,Color.FromArgb(Result,Result,Result));}this.pictureBox1.Image=bitmap;}