首页 > 学院 > 开发设计 > 正文

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

2019-11-17 03:03:11
字体:
来源:转载
供稿:网友
c# winform 把彩色图片转换为灰色的图片,变灰,灰度图片,速度很快,safe,unsafe

把彩色图片转换为灰色的图片,直接用.net接口遍历每个像素点转换的效率非常低,800K的图片65万像素我的电脑要用5分钟,而用了unsafe,速度提高了几千倍,同样的图片只用了0.几秒附一个常用的遍历像素点转换的代码构造函数

C#代码收藏代码
  1. publicTphc()
  2. {
  3. InitializeComponent();
  4. this.pictureBox1.ImageLocation="F://黑色头发.jpg";
  5. }

按钮单击事件

C#代码收藏代码
  1. PRivatevoidbutton3_Click(objectsender,EventArgse)
  2. {
  3. intHeight=this.pictureBox1.Image.Height;
  4. intWidth=this.pictureBox1.Image.Width;
  5. Bitmapbitmap=newBitmap(Width,Height);
  6. BitmapMyBitmap=(Bitmap)this.pictureBox1.Image;
  7. Colorpixel;
  8. for(intx=0;x<Width;x++)
  9. for(inty=0;y<Height;y++)
  10. {
  11. pixel=MyBitmap.GetPixel(x,y);
  12. intr,g,b,Result=0;
  13. r=pixel.R;
  14. g=pixel.G;
  15. b=pixel.B;
  16. //实例程序以加权平均值法产生黑白图像
  17. intiType=2;
  18. switch(iType)
  19. {
  20. case0://平均值法
  21. Result=((r+g+b)/3);
  22. break;
  23. case1://最大值法
  24. Result=r>g?r:g;
  25. Result=Result>b?Result:b;
  26. break;
  27. case2://加权平均值法
  28. Result=((int)(0.7*r)+(int)(0.2*g)+(int)(0.1*b));
  29. break;
  30. }
  31. bitmap.SetPixel(x,y,Color.FromArgb(Result,Result,Result));
  32. }
  33. this.pictureBox1.Image=bitmap;
  34. }


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表