public static Bitmap DoIt(Bitmap bmp) { GaussianBlur blur = new GaussianBlur(10, 50); Bitmap blurred = blur.Apply(bmp); Bitmap ret = new Bitmap(blurred.Width, blurred.Height, blurred.PixelFormat); for (int y = 0; y < blurred.Height; y++) { for (int x = 0; x < blurred.Width; x++) { Color blurredColor = blurred.GetPixel(x, y); Color orinalColor = bmp.GetPixel(x, y); Color newColor = Color.FromArgb((blurredColor.R + orinalColor.R * 2) / 3, (blurredColor.G + orinalColor.G * 2) / 3, (blurredColor.B + orinalColor.B * 2) / 3); ret.SetPixel(x, y, newColor); } } GammaCorrection gc = new GammaCorrection(.8); gc.ApplyInPlace(ret); Sharpen sharpen = new Sharpen(); sharpen.ApplyInPlace(ret); Grayscale filter = new Grayscale(0.2125, 0.7154, 0.0721); Bitmap gray = filter.Apply(ret); CannyEdgeDetector canny = new CannyEdgeDetector(); gray = canny.Apply(gray); for (int y = 0; y < gray.Height; y++) { for (int x=0;x < gray.Width; x++) { if(gray.GetPixel(x,y).R > 0) { Color retColor = ret.GetPixel(x, y); Color newColor = Color.FromArgb( (int)(retColor.R * .7), (int)(retColor.G * .7), (int)(retColor.B * .7)); ret.SetPixel(x, y, newColor); } } } return ret; }
public static bool ColorCorrections(string fileName, int brightness, int contrast, double gamma, int hue, float saturation) { if (String.IsNullOrEmpty(fileName)) throw new ArgumentNullException("fileName"); bool result = false; using (var ms = new MemoryStream(File.ReadAllBytes(fileName))) { using (Bitmap bmp = new Bitmap(ms)) { //The filter accepts 8 bpp grayscale and 24/32 bpp color images for processing, value [-255, +255] default 10 if (brightness >= -255 && brightness != 0 && brightness <= 255) { BrightnessCorrection filter = new BrightnessCorrection(brightness); filter.ApplyInPlace(bmp); result = true; } //The filter accepts 8 bpp grayscale and 24/32 bpp color images for processing, value [-127, +127] default 10 if (contrast >= -127 && contrast != 0 && contrast <= 127) { ContrastCorrection filter = new ContrastCorrection(contrast); filter.ApplyInPlace(bmp); result = true; } //The filter accepts 8 bpp grayscale and 24 bpp color images for processing, value [0.1, 5.0] default 1.0 if (gamma >= 0.1D && gamma != 1D && gamma <= 5D) { GammaCorrection filter = new GammaCorrection(gamma); filter.ApplyInPlace(bmp); result = true; } //The filter accepts 8 bpp grayscale and 24/32 bpp color images for processing, value [-180, +180] default 0 if (hue >= -180 && hue != 0 && hue <= 180) { HueModifier filter = new HueModifier(hue); filter.ApplyInPlace(bmp); result = true; } //The filter accepts 24 and 32 bpp color images for processing, value specified percentage [-1, +1] default 0.1 if (saturation >= -100f && saturation != 0f && saturation <= 100f) { SaturationCorrection filter = new SaturationCorrection(saturation / 100); filter.ApplyInPlace(bmp); result = true; } bmp.Save(fileName); } } return result; }
public static BitmapSource ColorCorrections(BitmapSource source, int brightness, int contrast, double gamma, int hue, float saturation) { if (source == null) throw new ArgumentNullException("source"); BitmapSource output = null; if (source.Format == PixelFormats.Bgr32 && gamma != 1D) { source = new FormatConvertedBitmap(source, PixelFormats.Bgr24, null, 0); } using (Bitmap bmp = Convert(source)) { int bpp = source.Format.BitsPerPixel; if (bpp == 8 || bpp == 24 || bpp == 32) { //The filter accepts 8 bpp grayscale and 24/32 bpp color images for processing, value [-255, +255] default 10 if (brightness >= -255 && brightness != 0 && brightness <= 255) { BrightnessCorrection filter = new BrightnessCorrection(brightness); filter.ApplyInPlace(bmp); } //The filter accepts 8 bpp grayscale and 24/32 bpp color images for processing, value [-127, +127] default 10 if (contrast >= -127 && contrast != 0 && contrast <= 127) { ContrastCorrection filter = new ContrastCorrection(contrast); filter.ApplyInPlace(bmp); } } if (bpp == 8 || bpp == 24) { //The filter accepts 8 bpp grayscale and 24 bpp color images for processing, value [0.1, 5.0] default 1.0 if (gamma >= 0.1D && gamma != 1D && gamma <= 5D) { GammaCorrection filter = new GammaCorrection(gamma); filter.ApplyInPlace(bmp); } } if (bpp == 8 || bpp == 24 || bpp == 32) { //The filter accepts 8 bpp grayscale and 24/32 bpp color images for processing, value [-180, +180] default 0 if (hue >= -180 && hue != 0 && hue <= 180) { HueModifier filter = new HueModifier(hue); filter.ApplyInPlace(bmp); } } if (bpp == 24 || bpp == 32) { //The filter accepts 24 and 32 bpp color images for processing, value specified percentage [-1, +1] default 0.1 if (saturation >= -100f && saturation != 0f && saturation <= 100f) { SaturationCorrection filter = new SaturationCorrection(saturation / 100); filter.ApplyInPlace(bmp); } } output = Convert(bmp); } return CloneImage(output); }