1: /// <summary>
2: /// Adjusts the Contrast
3: /// </summary>
4: /// <param name="OriginalImage">Image to change</param>
5: /// <param name="Value">Used to set the contrast (-100 to 100)</param>
6: /// <returns>A bitmap object</returns>
7: public static Bitmap AdjustContrast(Bitmap OriginalImage, float Value)
8: { 9: Bitmap NewBitmap = new Bitmap(OriginalImage.Width, OriginalImage.Height);
10: BitmapData NewData = Image.LockImage(NewBitmap);
11: BitmapData OldData = Image.LockImage(OriginalImage);
12: int NewPixelSize = Image.GetPixelSize(NewData);
13: int OldPixelSize = Image.GetPixelSize(OldData);
14: Value = (100.0f + Value) / 100.0f;
15: Value *= Value;
16:
17: for (int x = 0; x < NewBitmap.Width; ++x)
18: { 19: for (int y = 0; y < NewBitmap.Height; ++y)
20: { 21: Color Pixel = Image.GetPixel(OldData, x, y, OldPixelSize);
22: float Red = Pixel.R / 255.0f;
23: float Green = Pixel.G / 255.0f;
24: float Blue = Pixel.B / 255.0f;
25: Red = (((Red - 0.5f) * Value) + 0.5f) * 255.0f;
26: Green = (((Green - 0.5f) * Value) + 0.5f) * 255.0f;
27: Blue = (((Blue - 0.5f) * Value) + 0.5f) * 255.0f;
28: Image.SetPixel(NewData, x, y,
29: Color.FromArgb(MathHelper.Clamp((int)Red, 255, 0),
30: MathHelper.Clamp((int)Green, 255, 0),
31: MathHelper.Clamp((int)Blue, 255, 0)),
32: NewPixelSize);
33: }
34: }
35: Image.UnlockImage(NewBitmap, NewData);
36: Image.UnlockImage(OriginalImage, OldData);
37: return NewBitmap;
38: }