使用 Magick.NET 调整透明图像的大小

Resize transparent image with Magick.NET

在 Magick.NET 中调整具有透明度的图像大小时遇到​​一些奇怪的问题。我正在使用 Q16-AnyCPU。

我正在将 100 像素的图像调整为 400 像素。

MagickImage image = new MagickImage("test.png");
image.Resize(400, 400);
image.Write("test_resized.png");

我尝试了很多image.FilterTypeimage.Interpolate的组合,但都没有什么好的结果。 只有当我使用 image.AdaptiveResize(400, 400); 时,它看起来好一些,但并不像预期的那样。我要调整大小的最终图像要大得多,AdaptiveResize 非常慢。

当我通过 image.Alpha(AlphaOption.Off); 禁用 Alpha 时,我看起来相当不错,但我想保留 Alpha。

源图(白色区域透明):

我得到的:

我想要的:

我必须设置 VirtuaPixelMethod,感谢提示:

MagickImage image = new MagickImage("test.png");
image.VirtualPixelMethod = VirtualPixelMethod.Transparent;
image.Resize(400, 400);
image.Write("test_resized.png");