如何使用lib Magick.NET更改图像上的像素颜色。我使用以下代码:
MagickImage img = new MagickImage(@"d:\TEST\110706M01000509.jpg");
WritablePixelCollection pc = img.GetWritablePixels(100, 100, 50, 50);
foreach (Pixel p in pc)
{
p.SetChannel(0, 255);
p.SetChannel(1, 0);
p.SetChannel(2, 0);
}
pc.Write();
img.Write(@"d:\TEST\110706M01000509_.jpg");
但是在输出图像上,像素的颜色没有红色。
示例:
为什么数字的颜色不是红色?
答案 0 :(得分:1)
使用当前版本的Magick.NET(7.0.0.0014),您需要执行以下操作:
using (WritablePixelCollection pc = img.GetWritablePixels(100, 100, 50, 50))
{
foreach (Pixel p in pc)
{
p.SetChannel(0, 255);
p.SetChannel(1, 0);
p.SetChannel(2, 0);
pc.Set(p) // This will update the PixelCollection
}
}
使用Magick.NET 7.0.0.0015 ,对 pc.Set 的调用将自动完成,您的上述示例将有效。
答案 1 :(得分:1)
在7.4中,上述答案在很大程度上是正确的,但是现在获取像素的方法是
magick.GetPixels()
不是
magick.GetWritablePixels()
他们返回IPixelCollection
答案 2 :(得分:0)
在System.Drawing.Color" R"," G"和" B"存在 只需将像素设置为
Color.FromArgb(r,g,b);
它必须是设置该库中的像素,找到它并像我说的那样做的东西 最诚挚的问候