在保持透明度的同时填充区域

平面设计 透明度 油漆网
2022-01-29 17:43:45

在 Paint.NET 中,我想使用填充工具更改图标的颜色,但我想保留像素的 alpha 通道。Photoshop也有同样的问题,但我找不到 Paint.NET 的解决方案。

填写前:

带 Alpha 通道的像素

填写后:

没有 Alpha 通道的像素

如您所见,半透明像素失去了它们的 alpha 通道值。有没有办法在 Paint.NET 中实现这一点?

3个回答

这也是我一直在寻找的东西。该代码几乎与CodeLab 教程第 1 部分 - 简单 插件演练的示例代码相同。所以几分钟后,现在有一个简单的插件可以直接从 Paint.NET 完成这项工作。

https://github.com/friedrickjoel/AlphaColor/raw/main/AlphaColor.dll

作为一名开发人员,我刚刚编写了一个小 C# 程序来为我执行此任务:

public class Program
{
  public const string IMAGE = @"logo.png";

  public static void Main(string[] args)
  {
    Color targetColor = Color.FromArgb(0, 3, 143, 106);

    using (var image = Bitmap.FromFile(IMAGE))
    {
      using (var bmp = new Bitmap(image))
      {
        for (int x = 0; x < image.Width; x++)
        {
          for (int y = 0; y < image.Height; y++)
          {
            var alpha = bmp.GetPixel(x, y).A;
            bmp.SetPixel(x, y, Color.FromArgb(alpha, targetColor.R, targetColor.G, targetColor.B));
          }
        }

        bmp.Save("icon.png", ImageFormat.Png);
      }
    }
  }

}

我已经尝试并未能找到直接在 Paint.NET 3.36 中执行此操作的方法。

您不能通过填充选区来做到这一点,因为选区仅包含整个像素,而不是 alpha。魔棒工具上的容差设置仅确定选择整个像素的颜色阈值。

你也不能用上面的“填充”层来伪造它,因为你不能使用原始层作为蒙版。

我认为您可以做的最接近的事情是使用“调整”>“曲线”来改变像素的色调,但这是一种间接的方式,并且很难达到给定的目标颜色(尽管使用一点数学)。

但是,您可以渲染 Mandelbrot 和 Julia 分形!