Почему мое преобразование в Magick.NET приводит к черному файлу PCX?
У меня есть следующий .png-file
который я хочу преобразовать с помощью 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");
}
Это приводит к следующему выводу:
Используемый пакет: https://www.nuget.org/packages/Magick.NET-Q8-AnyCPU/7.0.1.500 (Net40)
1 ответ
Я на самом деле не говорю .NET
Дирк (@dlemstra) - человек для этого, но проблема в том, что вся (белая) информация на самом деле находится в альфа-слое, а само базовое изображение просто сплошное черное, и ImageMagick сделал это правильно, как PCX
не может сделать прозрачность.
Вы можете видеть, что я имею в виду, если вы извлекаете альфа-слой следующим образом:
convert https://stackru.com/images/2e2457ec784b8f9e8c51847f540bc836363797b4.png -alpha extract a.jpg
В командной строке вы должны создать учетную запись ImageMagick для альфа-слоя, используя -flatten
convert https://stackru.com/images/2e2457ec784b8f9e8c51847f540bc836363797b4.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;
}