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

514 ℃

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

代码如下:

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#语法中的关于Environment.Exit()方法的运用

C#语法如何通过身份证号码判断是否成年

C#语法中怎么判断两个时间的大小?

标签: C#语法, 图片马赛克

上面是“C#语法怎么实现图片马赛克效果?”的全面内容,想了解更多关于 php入门 内容,请继续关注web建站教程。

当前网址:https://m.ipkd.cn/webs_4128.html

声明:本站提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请发送到邮箱:admin@ipkd.cn,我们会在看到邮件的第一时间内为您处理!

dede:list列表只显示图片文章,没图片的不显示
SEO问答:相关词能提高首页关键词的密度吗?
帝国cms专题调用标题-简介-文章数-创建时间-浏览
php语法中如何利用meta标签实现手机浏览器中跳转到微信
帝国cms功能之网站管理系统栏目的增加