如果您想更改每种颜色,请尝试使用旋转功能(移位或添加)而不是翻转功能(反转)。换句话说,考虑每一种颜色(红色、绿色和蓝色)的 0 到 255 的范围,它们像一圈值一样在尖端连接。然后通过添加一些值并执行 mod 256 来移动圆圈周围的每种颜色。例如,如果红色的起始值为 255,然后添加 1,则得到 0。如果将所有三种颜色都移动 128,则会得到显着不同图片中每种原始颜色的值,甚至是灰色。灰色 127, 127, 127 变成白色 255, 255, 255。灰色 128, 128, 128 变成黑色 0, 0, 0。 有一种称为曝光的摄影效果,是 Man Ray 在 1930 年代偶然发现的。
您还可以对每种颜色(红色、绿色、蓝色)进行不同数量的旋转操作,以真正弄乱图片。
您还可以对色调进行旋转操作,将每个原始颜色的色调在色调圈上移动一定量,这会在不改变亮度的情况下改变所有颜色,因此阴影仍然看起来像阴影,让人看起来像辛普森一家或蓝精灵例子。
移位 128 的代码可能如下所示:
public static Color Invert(this Color c) => Color.FromArgb(c.R.Invert(), c.G.Invert(), c.B.Invert());
public static byte Invert(this byte b) {
unchecked {
return (byte)(b + 128);
}
}