C#语法怎么实现图片马赛克效果?

  

在C#语法中,怎么实现将图片做成马赛克效果?下面编程教程网小编给大家详细介绍一下具体实现代码!

代码如下:

using System.Drawing;
using System.Drawing.Imaging;
using System.Web.Mvc;
  
namespace MVC2017_Sample.Controllers
{
  public class DefaultController : Controller
  {
    public ActionResult Index()
    {
      //原图
      Image img = Image.FromFile("e:\\pic.jpg");
      Bitmap map = new Bitmap(img);
      //马赛克处理后的图片
      Image img2 = AdjustTobMosaic(map, 20);
      img2.Save("c:\\1_bak.jpg", ImageFormat.Jpeg);
      return View();
    }
  
    /// <summary>
    /// 马赛克处理
    /// </summary>
    /// <param name="bitmap"></param>
    /// <param name="effectWidth"> 影响范围 每一个格子数 </param>
    /// <returns></returns>
    public Bitmap AdjustTobMosaic(System.Drawing.Bitmap bitmap, int effectWidth)
    {
      // 差异最多的就是以照一定范围取样 玩之后直接去下一个范围
      for (int heightOfffset = 0; heightOfffset < bitmap.Height; heightOfffset += effectWidth)
      {
        for (int widthOffset = 0; widthOffset < bitmap.Width; widthOffset += effectWidth)
        {
          int avgR = 0, avgG = 0, avgB = 0;
          int blurPixelCount = 0;
  
          for (int x = widthOffset; (x < widthOffset + effectWidth && x < bitmap.Width); x++)
          {
            for (int y = heightOfffset; (y < heightOfffset + effectWidth && y < bitmap.Height); y++)
            {
              System.Drawing.Color pixel = bitmap.GetPixel(x, y);
  
              avgR += pixel.R;
              avgG += pixel.G;
              avgB += pixel.B;
  
              blurPixelCount++;
            }
          }
  
          // 计算范围平均
          avgR = avgR / blurPixelCount;
          avgG = avgG / blurPixelCount;
          avgB = avgB / blurPixelCount;
  
          // 所有范围内都设定此值
          for (int x = widthOffset; (x < widthOffset + effectWidth && x < bitmap.Width); x++)
          {
            for (int y = heightOfffset; (y < heightOfffset + effectWidth && y < bitmap.Height); y++)
            {
              System.Drawing.Color newColor = System.Drawing.Color.FromArgb(avgR, avgG, avgB);
              bitmap.SetPixel(x, y, newColor);
            }
          }
        }
      }
      return bitmap;
    }
  }
}
以上是编程学习网小编为您介绍的“C#语法怎么实现图片马赛克效果?”的全面内容,想了解更多关于 php入门 内容,请继续关注编程基础学习网。

相关文章