/// <summary> /// Processes the image. /// </summary> /// <param name="source">The current image to process</param> /// <param name="destination">The new Image to return</param> /// <returns> /// The processed <see cref="System.Drawing.Bitmap"/>. /// </returns> public override Bitmap TransformImage(Image source, Image destination) { using (Graphics graphics = Graphics.FromImage(destination)) { using (ImageAttributes attributes = new ImageAttributes()) { attributes.SetColorMatrix(this.Matrix); Rectangle rectangle = new Rectangle(0, 0, source.Width, source.Height); graphics.DrawImage(source, rectangle, 0, 0, source.Width, source.Height, GraphicsUnit.Pixel, attributes); } } // Fade the contrast destination = Adjustments.Contrast(destination, -25); // Add a glow to the image. destination = Effects.Glow(destination, Color.FromArgb(70, 255, 153, 102)); // Add a vignette to finish the effect. destination = Effects.Vignette(destination, Color.FromArgb(220, 102, 34, 0)); return((Bitmap)destination); }
/// <summary> /// Processes the image. /// </summary> /// <param name="factory"> /// The current instance of the <see cref="T:ImageProcessor.ImageFactory"/> class containing /// the image to process. /// </param> /// <returns> /// The processed image from the current instance of the <see cref="T:ImageProcessor.ImageFactory"/> class. /// </returns> public Image ProcessImage(ImageFactory factory) { Bitmap newImage = null; Image image = factory.Image; try { int threshold = (int)this.DynamicParameter; newImage = new Bitmap(image); newImage = Adjustments.Contrast(newImage, threshold); image.Dispose(); image = newImage; } catch (Exception ex) { if (newImage != null) { newImage.Dispose(); } throw new ImageProcessingException("Error processing image with " + this.GetType().Name, ex); } return(image); }
/// <summary> /// Processes the image. /// </summary> /// <param name="factory"> /// The current instance of the <see cref="T:ImageProcessor.ImageFactory"/> class containing /// the image to process. /// </param> /// <returns> /// The processed image from the current instance of the <see cref="T:ImageProcessor.ImageFactory"/> class. /// </returns> public Image ProcessImage(ImageFactory factory) { Image image = factory.Image; try { int threshold = (int)this.DynamicParameter; return(Adjustments.Contrast(image, threshold)); } catch (Exception ex) { throw new ImageProcessingException("Error processing image with " + this.GetType().Name, ex); } }
/// <summary> /// Processes the image. /// </summary> /// <param name="source">The current image to process</param> /// <param name="destination">The new Image to return</param> /// <returns> /// The processed <see cref="Bitmap"/>. /// </returns> public override Bitmap TransformImage(Image source, Image destination) { using (var graphics = Graphics.FromImage(destination)) { using (var attributes = new ImageAttributes()) { attributes.SetColorMatrix(this.Matrix); var rectangle = new Rectangle(0, 0, source.Width, source.Height); graphics.DrawImage(source, rectangle, 0, 0, source.Width, source.Height, GraphicsUnit.Pixel, attributes); // Overlay the image with some semi-transparent colors to finish the effect. using (var path = new GraphicsPath()) { path.AddRectangle(rectangle); // Paint a burgundy rectangle with a transparency of ~30% over the image. // Paint a blue rectangle with a transparency of 20% over the image. using (var brush = new SolidBrush(Color.FromArgb(77, 38, 14, 28))) { Region oldClip = graphics.Clip; graphics.Clip = new Region(rectangle); graphics.FillRectangle(brush, rectangle); // Fill the blue. brush.Color = Color.FromArgb(51, 29, 32, 59); graphics.FillRectangle(brush, rectangle); graphics.Clip = oldClip; } } } } // Add brightness and contrast to finish the effect. destination = Adjustments.Brightness(destination, 5); destination = Adjustments.Contrast(destination, 85); return((Bitmap)destination); }