[C#] 濾鏡筆記 - 負片效果(Invert)
2012-12-13
Invert 英文叫做顛倒.. 原理很簡單也就是 將 255- 原本的值..
這樣 0(黑) 就會變成 255(白) 反之 255(白) 就會變成 0(黑)
所以公式就是將R、G、B 都用 255 去減..
就可以拿到反轉值,之所以會有這種效果需求跟以前底片有分正片根負片有關
大部分大家都是用負片的底片,洗出來時候剛好反過來的顏色變成你看到的相片..
C# Code:
public System.Drawing.Bitmap ConvertToInvert(System.Drawing.Image img) {
// 讀入欲轉換的圖片並轉成為 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);
// 負片效果 將其反轉
System.Drawing.Color newColor = System.Drawing.Color.FromArgb(pixel.A, 255 - pixel.R, 255 - pixel.G, 255 - pixel.B);
bitmap.SetPixel(x, y, newColor);
}
}
// 結果
return bitmap;
}
結果: