c# winform 把彩色图片转换为灰色的图片,变灰,灰度图片,速度很快,safe,unsafe

王朝学院·作者佚名  2016-05-17
窄屏简体版  字體: 小  |  中  |  大  |  超大  

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;}

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航