//柔化 public static Bitmap SoftenImage(Bitmap bmp) { int height = bmp.Height; int width = bmp.Width; Bitmap newbmp = new Bitmap(width, height); LockBitmap lbmp = new LockBitmap(bmp); LockBitmap newlbmp = new LockBitmap(newbmp); lbmp.LockBits(); newlbmp.LockBits(); Color pixel; //高斯模板 int[] Gauss = { 1, 2, 1, 2, 4, 2, 1, 2, 1 }; for (int x = 1; x < width - 1; x++) { for (int y = 1; y < height - 1; y++) { int r = 0, g = 0, b = 0; int Index = 0; for (int col = -1; col <= 1; col++) { for (int row = -1; row <= 1; row++) { pixel = lbmp.GetPixel(x + row, y + col); r += pixel.R * Gauss[Index]; g += pixel.G * Gauss[Index]; b += pixel.B * Gauss[Index]; Index++; } } r /= 16; g /= 16; b /= 16; //处理颜色值溢出 r = r > 255 ? 255 : r; r = r < 0 ? 0 : r; g = g > 255 ? 255 : g; g = g < 0 ? 0 : g; b = b > 255 ? 255 : b; b = b < 0 ? 0 : b; newlbmp.SetPixel(x - 1, y - 1, Color.FromArgb(r, g, b)); } } lbmp.UnlockBits(); newlbmp.UnlockBits(); newbmp.MakeTransparent(Color.Black);//当图片的背景为黑色时 return(newbmp); }
//雾化 public static Bitmap AtomizationImage(Bitmap bmp) { int height = bmp.Height; int width = bmp.Width; Bitmap newbmp = new Bitmap(width, height); LockBitmap lbmp = new LockBitmap(bmp); LockBitmap newlbmp = new LockBitmap(newbmp); lbmp.LockBits(); newlbmp.LockBits(); System.Random MyRandom = new Random(); Color pixel; for (int x = 1; x < width - 1; x++) { for (int y = 1; y < height - 1; y++) { int k = MyRandom.Next(123456); //像素块大小 int dx = x + k % 19; int dy = y + k % 19; if (dx >= width) { dx = width - 1; } if (dy >= height) { dy = height - 1; } pixel = lbmp.GetPixel(dx, dy); newlbmp.SetPixel(x, y, pixel); } } lbmp.UnlockBits(); newlbmp.UnlockBits(); newbmp.MakeTransparent(Color.Black);//当图片的背景为黑色时 return(newbmp); }