2015-10-20 121 views
0

在Magick.NET中使用透明度調整圖像大小時,出現了一些奇怪的問題。我正在使用Q16-AnyCPU。使用Magick.NET調整透明圖像的大小

我將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

+0

沒有很多魔術在這裏工作。如果您使用.NET,那麼您可以指定InterpolationMode.NearestNeighbor和PixelOffsetMode.Half來獲取較大圖像的塊狀非插值版本。無論使用MagickImage做什麼,都要做同樣的事情。 –

回答

0

我不得不設置VirtuaPixelMethod,謝謝你的提示:

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