繁体   English   中英

如何为PNG添加彩色背景或向图像添加颜色叠加层?

[英]How to add a colored background to PNG or add a Color overlay to an Image?

为PNG图像提供彩色背景的合适蜡是什么? 如下例所示:
具有不同级别的不透明度和透明背景的PNG图像: 具有不同级别的不透明度和透明背景的PNG图像

带有背景色的PNG图像: 应用背景色的PNG图像

问题是要用指定的颜色从旧的图像中复制出新的图像。

第二部分是如何向PNG图像添加颜色叠加层。 也许用新颜色替换白色。

这是我的PNG示例: 这是我的PNG示例

这是我想获取的示例PNG: 这是我想获取的示例PNG

纠正我,如果我错了..但是这可能是使用灰度图像而不是带有Alpha通道的PNG的可能性

Bitmap colorBitmap(Color forGroundColor, Color backGroundColor, Bitmap bmpGrayScale)
{
  Size size = bmpGrayScale.Size;
  Bitmap applyForgroundColor= new Bitmap(size.Width, size.Height);
  Rectangle rect1 = new Rectangle(Point.Empty, bmpGrayScale.Size);
  using (Graphics G1 = Graphics.FromImage(applyForgroundColor) )
  {
    G1.Clear(forGroundColor);
    G1.DrawImageUnscaledAndClipped(applyForgroundColor, rect1);
  }
  for (int y = 0; y < size.Height; y++)
    for (int x = 0; x < size.Width; x++)
    {
      Color c1 = applyForgroundColor.GetPixel(x, y);
      Color c2 = bmpGrayScale.GetPixel(x, y);
      applyForgroundColor.SetPixel(x, y, Color.FromArgb((int)(255 * c2.GetBrightness()), c1 ) );
    }

  Bitmap applyBackgroundColor= new Bitmap(size.Width, size.Height);
  Rectangle rect2 = new Rectangle(Point.Empty, bmpGrayScale.Size);
  using (Graphics G2 = Graphics.FromImage(applyBackgroundColor) )
  {
    G2.Clear(backGroundColor);
    G2.DrawImageUnscaledAndClipped(applyForgroundColor, rect2);
  }
  return applyBackgroundColor;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM