【问题标题】:How to replace one set of color 'shades' with another set如何用另一组替换一组颜色“阴影”
【发布时间】:2014-09-05 07:30:45
【问题描述】:

我正在寻找一种“神奇”功能,它可以拍摄图像并返回副本,但将一组色调替换为另一组。

例如我有一张红鱼的照片:它有各种灰度和黑白,但基本上是各种深浅不一的红色。我想将它传递给这个“魔术”函数,并告诉它将其 Color.Red 阴影更改为等效的 Color.Yellow 阴影等等。只需简单的(彩虹)颜色就足够了。

我在这里和互联网上看到了许多代码 sn-ps,但他们似乎专注于用另一种颜色替换单一颜色或使用阈值,这在交互上效果很好,但还不够神奇。

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

有人有这种情况吗?

【问题讨论】:

标签: c# image replace colors


【解决方案1】:

您可以使用 FromAhsb() 来完成此操作,如 Oliver 在 Image hue modification in C# 的回答中所示(或任何其他可让您从 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

这会产生以下结果:

从 到

【讨论】:

  • 太棒了!正是我想要的。感谢 CDirkx 和 Oliver,让我感到羞耻的是没有找到正确的术语(“hue”)。
猜你喜欢
  • 2018-04-21
  • 2015-02-12
  • 2017-10-05
  • 2021-12-23
  • 2019-07-06
  • 2014-05-07
  • 1970-01-01
  • 1970-01-01
  • 2013-06-09
相关资源
最近更新 更多