public static Bitmap NegativeImage(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; for (int x = 1; x < width; x++) { for (int y = 1; y < height; y++) { int r, g, b; pixel = lbmp.GetPixel(x, y); r = 255 - pixel.R; g = 255 - pixel.G; b = 255 - pixel.B; newlbmp.SetPixel(x, y, Color.FromArgb(r, g, b)); } } lbmp.UnlockBits(); newlbmp.UnlockBits(); return(newbmp); }
public static Bitmap EmbossmentImage(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 pixel1, pixel2; for (int x = 0; x < width - 1; x++) { for (int y = 0; y < height - 1; y++) { int r = 0, g = 0, b = 0; pixel1 = lbmp.GetPixel(x, y); pixel2 = lbmp.GetPixel(x + 1, y + 1); r = Math.Abs(pixel1.R - pixel2.R + 128); g = Math.Abs(pixel1.G - pixel2.G + 128); b = Math.Abs(pixel1.B - pixel2.B + 128); if (r > 255) { r = 255; } if (r < 0) { r = 0; } if (g > 255) { g = 255; } if (g < 0) { g = 0; } if (b > 255) { b = 255; } if (b < 0) { b = 0; } newlbmp.SetPixel(x, y, Color.FromArgb(r, g, b)); } } lbmp.UnlockBits(); newlbmp.UnlockBits(); return(newbmp); }
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; //gaussian template 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(); return(newbmp); }
public static Bitmap GrayImage(Bitmap bmp, int type) { 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; for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) { pixel = lbmp.GetPixel(x, y); int r, g, b, Result = 0; r = pixel.R; g = pixel.G; b = pixel.B; switch (type) { case 0: //avg Result = ((r + g + b) / 3); break; case 1: //max Result = r > g ? r : g; Result = Result > b ? Result : b; break; case 2: //weighted avg Result = ((int)(0.3 * r) + (int)(0.59 * g) + (int)(0.11 * b)); break; } newlbmp.SetPixel(x, y, Color.FromArgb(Result, Result, Result)); } } lbmp.UnlockBits(); newlbmp.UnlockBits(); return(newbmp); }
public static Bitmap AtomizationImage(Bitmap bmp) { int height = bmp.Height; int width = bmp.Width; Bitmap newbmp = new Bitmap(width, height); var lbmp = new LockBitmap(bmp); var 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(); return(newbmp); }