C#编写滤镜 图片色调取反效果(Invert)

时间:2023-01-14 21:23:07

转自:http://www.it165.net/pro/html/201208/3469.html

Invert 英文叫做颠倒.. 原理很简单也就是 将 255- 原本的值..

这样 0(黑) 就会变成  255(白) 反之 255(白) 就会变成 0(黑)

所以公式就是将R、G、B 都用 255 去减..

就可以拿到反转值,之所以会有这种效果需求跟以前底片有分正片根负片有关

大部分大家都是用负片的底片,洗出来时候刚好反过来的颜色变成你看到的相片..

C# Code:

01.public System.Drawing.Bitmap ConvertToInvert(System.Drawing.Image img) {
02.// 读入欲转换的图片并转成为 WritableBitmap www.it165.net
03.System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(img);
04.for (int y = 0; y < bitmap.Height; y++)
05.{
06.for (int x = 0; x < bitmap.Width; x++)
07.{
08.// 取得每一个 pixel
09.var pixel = bitmap.GetPixel(x, y);
10. 
11.// 负片效果 将其反转
12.System.Drawing.Color newColor = System.Drawing.Color.FromArgb(pixel.A, 255 - pixel.R, 255 - pixel.G, 255 - pixel.B);
13. 
14.bitmap.SetPixel(x, y, newColor);
15. 
16.}
17.}
18.// 显示结果
19.return bitmap;
20.}

结果:

C#编写滤镜 图片色调取反效果(Invert)