gpt4 book ai didi

c# - 如何在 C# 中渲染带有颜色键控的绿色蒙版的图像?

转载 作者:太空宇宙 更新时间:2023-11-03 20:08:58 26 4
gpt4 key购买 nike

试图找出最优雅的方式来在 C# 的特定颜色 mask 内渲染图像(通过 System.Drawing 或适用于桌面和 ASP.NET 应用程序的等效方法)。

蒙版图像将包含图像应“绘制”的绿色键。

(下面的期望结果图像并不完美,手套索...)

Desired Result

最佳答案

为此有多种技术:

  1. 扫描像素数据并构建蒙版图像(如 itsme86 和 Moby Disk 已建议的那样)

  2. 扫描的一种变体,它从蒙版构建裁剪区域并在绘图时使用它(请参阅 Bob Powell 的 this article)

  3. Graphics.DrawImage 调用中使用颜色键进行 mask 。

我将重点介绍第三种选择。

假设您要从蒙版中消除的图像颜色是 Color.Lime,我们可以使用 ImageAttributes.SetColorKey 来停止绘制任何该颜色在像这样调用 Graphics.DrawImage 期间:

using (Image background = Bitmap.FromFile("tree.png"))
using (Image masksource = Bitmap.FromFile("mask.png"))
using (var imgattr = new ImageAttributes())
{
// set color key to Lime
imgattr.SetColorKey(Color.Lime, Color.Lime);

// Draw non-lime portions of mask onto original
using (var g = Graphics.FromImage(background))
{
g.DrawImage(
masksource,
new Rectangle(0, 0, masksource.Width, masksource.Height),
0, 0, masksource.Width, masksource.Height,
GraphicsUnit.Pixel, imgattr
);
}

// Do something with the composited image here...
background.Save("Composited.png");
}

结果: Results

如果您想将这些树 block 放入另一幅图像中,您可以使用相同的技术(在 Color.Fuchsia 上使用颜色键)。

关于c# - 如何在 C# 中渲染带有颜色键控的绿色蒙版的图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21295151/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com