实现效果如下:
这里的处理逻辑首先是将图像进行马赛克处理,然后对于每一个需要填充的粒子按照颜色的深浅度计算粒子大小,最后按照坐标进行填充。
1、粒子类
public class Particle
{
public Point Position;//位置
public double Size;//尺寸
}
2、图像处理类
public class MosaicHelper
{
/// <summary>
/// 马赛克处理
/// </summary>
/// <param name="bitmap"></param>
/// <param name="effectWidth"> 影响范围 每一个格子数 </param>
public static List<Particle> AdjustTobMosaic(System.Drawing.Bitmap bitmap, int effectWidth)
{
List<Particle> particleList = new List<Particle>();
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++)
{