Изменение размера изображения в Magick.Net

Я пытаюсь изменить размер изображения с помощью Magick.Net. Но изображение, которое я сжал, имеет больший размер и битовую глубину, равную 32, тогда как исходное изображение имеет битовую глубину 2. Я хочу сохранить или уменьшить битовую глубину. Вот мой код

           var imageMacig = new MagickImage(filePath);
            //Percentage p = new Percentage(60);
            //imageMacig.Threshold(p); // 60 is OK 
            imageMacig.VirtualPixelMethod = VirtualPixelMethod.Transparent;
            imageMacig.Depth = 1;
            imageMacig.FilterType = FilterType.Quadratic;
            imageMacig.Transparent(MagickColor.FromRgb(0,0,0));
            imageMacig.Format = MagickFormat.Png00;
            imageMacig.Resize(newWidth, newHeight);
            imageMacig.Write(targetPath);
            imageMacig.Dispose();
            originalBMP.Dispose();

1 ответ

Вы получаете более двух цветов, потому что вы изменяете размер изображения. Это добавит альфа-канал, что приведет к появлению большого количества полупрозрачных пикселей. Если вы хотите вернуться к 2 цветам, вы должны изменить ColorType изображения на BiLevel. А установив формат в MagickFormat.Png8, вы убедитесь, что ваше изображение будет записано в виде 2-битного png. Ниже приведен пример того, как вы могли бы сделать это:

using (var imageMagick = new MagickImage(filePath))
{
  imageMagick.Transparent(MagickColor.FromRgb(0,0,0));
  imageMagick.FilterType = FilterType.Quadratic;
  imageMagick.Resize(newWidth, newHeight);
  imageMagick.ColorType = ColorType.Bilevel;
  imageMagick.Format = MagickFormat.Png8;
  imageMagick.Write(targetPath);
}
Другие вопросы по тегам