[C#] 濾鏡筆記 – 增減亮度

2012-12-12

這篇提一下有關於如何增加亮度..

原理就是將 Pixel 中的 R,B,G 其數值一起增加為一定量

但是增減時須注意是否會跳出 0~255 的區間..

C# Code :

/// <summary>
/// 增加或減少亮度
/// </summary>
/// <param name="img">System.Drawing.Image Source </param>
/// <param name="valBrightness">0~255</param>
/// <returns></returns>
public System.Drawing.Bitmap AdjustBrightness(System.Drawing.Image img, int valBrightness)
{
// 讀入欲轉換的圖片並轉成為 Bitmap
System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(img);
for (int y = 0; y < bitmap.Height; y++)
{
for (int x = 0; x < bitmap.Width; x++)
{
// 取得每一個 pixel
var pixel = bitmap.GetPixel(x, y);

// 判斷 如果處理過後 255 就設定為 255 如果小於則設定為 0
var pR = ((pixel.R + valBrightness > 255) ? 255 : pixel.R + valBrightness) < 0 ? 0 : ((pixel.R + valBrightness > 255) ? 255 : pixel.R + valBrightness);
var pG = ((pixel.G + valBrightness > 255) ? 255 : pixel.G + valBrightness) < 0 ? 0 : ((pixel.G + valBrightness > 255) ? 255 : pixel.G + valBrightness);
var pB = ((pixel.B + valBrightness > 255) ? 255 : pixel.B + valBrightness) < 0 ? 0 : ((pixel.B + valBrightness > 255) ? 255 : pixel.B + valBrightness);

// 將改過的 RGB 寫回
System.Drawing.Color newColor = System.Drawing.Color.FromArgb(pixel.A, pR, pG, pB);

bitmap.SetPixel(x, y, newColor);

}
}
// 回傳結果
return bitmap;
}

結果:
設定為 –100


var resultBitmap = AdjustBrightness((img), -100);


2012-10-04_132414



設定為 –50


var resultBitmap = AdjustBrightness((img), -50);

2012-10-04_132435



設定為 +50


var resultBitmap = AdjustBrightness((img), 50);


2012-10-04_132450



設定為 +100


var resultBitmap = AdjustBrightness((img), 100);


2012-10-04_132506



如果設定為 +255 一定就是全白拉,如果是 -255 一定就是全黑了!


當麻許的超技八 2014 | Donma Hsu Design.