web建站教程
  1. 首页
  2. vuejs
  3. js
  4. 好玩
  5. seo教程
  6. 前端知识
  7. 百度echarts
  8. 更多
    php入门
    nodejs
    mockjs
    reactjs
    mysql
    wordpress
    织梦cms
    帝国cms
    git教程
    IT知识
    模板大全
    休息站

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

339 ℃
     

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://ipkd.cn/webs_4128.html

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

当前位置: 网站首页 > php入门
本文共计1438个字,预计阅读时长10分钟
生活小工具,收录了80多款小工具
上一篇: 介绍几款带有中国风古韵的免费可商用中文字体
下一篇: 推荐9款支持 Vue3 免费开源的前端 UI 组件库
x 打工人ai神器