c# - 在 Magick.Net 中调整图像大小

标签 c# .net 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();

最佳答案

你得到了两种以上的颜色,因为你正在调整图像的大小。这将添加一个 alpha channel ,这将导致大量的半透明像素。如果您想回到 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);
}

关于c# - 在 Magick.Net 中调整图像大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40817436/

相关文章:

c# - 在 C# 中进行浅拷贝的最快方法

c# - 从 C# 中的两种方法添加列表

c# - Entity Framework 核心 : Guid Greater Than for Paging

c# - 使用 Magick.NET 创建多页 TIFF

c# - ASF 格式的原生 .NET 库?

c# - 串口未授权访问异常

c# - sleep 表现不符合预期

c# - 从异步方法返回输出时推荐的方法签名?

c# - 如何使用 Magick.net 合成两个图像

c# - Magick.NET 减少 gif 文件大小