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

时间:2015-10-20 21:33:06

标签: c# image magick.net

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

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

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。

源图像(白色区域是透明的):

The white area is transparent

我得到了什么:

Wrong result

我想要的是什么:

Resized with Photoshop

1 个答案:

答案 0 :(得分:0)

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

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