如何更换一组颜色'阴影'用另一套

时间:2014-07-15 07:39:27

标签: c# image replace colors

我正在寻找一个魔法'将拍摄图像并返回副本但使用一组色调替换为另一组的功能。

e.g。我有一张红色鱼的照片:它有各种灰色和黑色和白色,但基本上是各种红色。我想把它传递给这个魔术'函数并告诉它将其Color.Red阴影更改为等效的Color.Yellow阴影等。只需简单的(彩虹)颜色即可。

我在这里和互联网上看到过很多代码片段,但他们似乎专注于用另一种颜色或使用阈值替换单一颜色,这在交互式上运行良好,但不够神奇。

我想要应用的图像不是照片或任何太复杂的图像,只是图标或简单的精灵等。 (我只是厌倦了在图像编辑器中创建副本!)

任何人都有这样的事情吗?

1 个答案:

答案 0 :(得分:2)

您可以使用Image hue modification in C#中的Oliver答案中显示的FromAhsb()(或任何其他允许您根据HSB值创建颜色的功能)来完成此操作。使用此功能,您可以轻松更改图像的色调,如下所示:

var image = new Bitmap("D:\\fish.png"); // location of your image
var color = Color.Red; //The color in the hue you want to change the image.

for (var x = 0; x < image.Width; x++)
{
    for (int y = 0; y < image.Height; y++)
    {
        Color originalColor = image.GetPixel(x, y);
        Color changedColor = FromAhsb(originalColor.A, color.GetHue(), originalColor.GetSaturation(), originalColor.GetBrightness());
        image.SetPixel(x,y, changedColor);
    }
}

image.Save("D:\\new_fish.png", System.Drawing.Imaging.ImageFormat.Png); // location of your new image

这会产生以下结果:

before  至 after