public void ChangeImageColorsAndUpdateImage(ColorModifier newColorInfo) { if (ImageFilePath != null) { byte[] imageInBytes = File.ReadAllBytes(ImageFilePath); using (MemoryStream ms = new MemoryStream(imageInBytes)) { using (System.Drawing.Image img = System.Drawing.Image.FromStream(ms)) { Bitmap previewImageBitMap = new Bitmap(img); for (int xCoordinate = 0; xCoordinate < previewImageBitMap.Width; xCoordinate++) { for (int yCoordinate = 0; yCoordinate < previewImageBitMap.Height; yCoordinate++) { System.Drawing.Color oldPixelColor = previewImageBitMap.GetPixel(xCoordinate, yCoordinate); System.Drawing.Color newPixelColor = GetNewPixelColor(oldPixelColor, newColorInfo); previewImageBitMap.SetPixel(xCoordinate, yCoordinate, newPixelColor); } } UpdateImagePreview(previewImageBitMap); ModifiedBitmap = previewImageBitMap; } } } }
public System.Drawing.Color GetNewPixelColor(System.Drawing.Color oldColor, ColorModifier colorModifier) { int newRed = Convert.ToInt32(oldColor.R + (colorModifier.Red * 2.5)); int newGreen = Convert.ToInt32(oldColor.G + (colorModifier.Green * 2.5));; int newBlue = Convert.ToInt32(oldColor.B + (colorModifier.Blue * 2.5));;; if (newRed > 255) { newRed = 255; } if (newRed < 0) { newRed = 0; } if (newGreen > 255) { newGreen = 255; } if (newGreen < 0) { newGreen = 0; } if (newBlue > 255) { newBlue = 255; } if (newBlue < 0) { newBlue = 0; } System.Drawing.Color newColor = System.Drawing.Color.FromArgb(newRed, newGreen, newBlue); return(newColor); }
public void applyToImageButton_Click(object sender, RoutedEventArgs e) { int red = Convert.ToInt32(sliderRed.Value); int green = Convert.ToInt32(sliderGreen.Value); int blue = Convert.ToInt32(sliderBlue.Value); ColorModifier newColorModifier = new ColorModifier(red, green, blue); ChangeImageColorsAndUpdateImage(newColorModifier); }