为什么我使用 Magick.NET 进行的转换会生成黑色 PCX 文件?

Why does my conversion with Magick.NET result in a black PCX file?

我有以下 .png-文件

我想用 Magick.NET 将其转换为 .pcx 文件。我使用以下代码进行转换:

using System.Drawing;
using using ImageMagick;

using (var bitmap = (Bitmap) Bitmap.FromFile("ptOHf.png"))
using (var magickImage = new MagickImage(bitmap))
{
  magickImage.Format = MagickFormat.Pcx;
  magickImage.ColorType = ColorType.Palette;
  magickImage.ColorSpace = ColorSpace.Gray;

  magickImage.Write("C:\somefile.pcx");
}

这导致以下输出:

使用的包:Magick.NET-Q8-AnyCPU 7.0.1.500 (Net40)

我真的不会说话 .NET,德克 (@dlemstra) 是那个人,但问题是所有(白色)信息实际上都在 alpha 层和基本图像本身只是纯黑色,ImageMagick 已经正确地做到了,因为 PCX 无法渲染透明度。

如果你像这样提取 alpha 层,你就会明白我的意思了:

convert http://i.stack.imgur.com/ptOHf.png -alpha extract a.jpg

在命令行中,您可以使用 -flatten

使 ImageMagick 考虑 alpha 层
convert http://i.stack.imgur.com/ptOHf.png -flatten result.pcx

我不知道,但我猜在 .NET 中,你会做类似的事情:

using (var magickImage = new MagickImage(bitmap))
{
  magickImage.Flatten();
  magickImage.Format = MagickFormat.Pcx;
  magickImage.ColorType = ColorType.Palette;
  magickImage.ColorSpace = ColorSpace.Gray;
}