C# 如何使用Magick.NET更改像素的颜色?

C# 如何使用Magick.NET更改像素的颜色?,c#,imagemagick,C#,Imagemagick,如何使用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)

如何使用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");
但在输出图像上,像素的颜色没有红色

例如:

为什么图形的颜色不是红色?

在System.Drawing.color中存在“R”、“G”和“B” 只需将像素设置为

Color.FromArgb(r,g,b);
一定是要在那个库中设置像素,找到它,然后按照我说的做
致以最诚挚的问候

使用当前版本的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.NET7.0.0.0015对pc.Set的调用将自动完成,您的上述示例将正常工作。

在7.4中,上述答案基本正确,但获取像素的方法现在是

magick.GetPixels()

不是

magick.GetWritablePixels()

它们返回集合