重新采样 PixelCacheAllocationFailed 时出现 MagickNET 异常

MagickNET exception when resample PixelCacheAllocationFailed

我在 ASP .NET 应用程序中使用 MagickNET。通常它是有效的,但有时使用一些文件(.jpg、.png)时,当我用另一个 DPI

重新采样图片时,我收到一个异常

ImageMagick.MagickResourceLimitErrorException: iisexpress.exe: PixelCacheAllocationFailed `D:\Data\IT Tools and Applications\Code\Zola\ZolaIntranet\Upload\Tempffe031b-b559-4b5c-8f88-e1a5b8e4fbe7.jpg' @ error/cache.c/OpenPixelCache/3369

这里是发生异常的行:

 tmpImage.Resample(new PointD(300,300));

当我尝试使用较小的 DPI(72 或更少)时,我遇到了另一个异常:

ImageMagick.MagickCacheErrorException: iisexpress.exe: UnableToExtendCache 'D:\Data\IT Tools and Applications\Code\Zola\ZolaIntranet\Upload\Temp458df9-f7ee-4e4b-abfd-628317b4b7eb.jpg': Invalid argument @ error/cache.c/OpenPixelCache/3536 ---> ImageMagick.MagickCacheErrorException: iisexpress.exe: UnableToExtendCache

有人可以有想法吗?

由于某种原因,对于少数PNG格式的图片,ImageMagick无法找到图片的密度。您必须在调用 Resample() 函数之前指定密度,这解决了我的问题。

PointD density = new PointD(300,300);

tmpImage.Density = density;
tmpImage.Resample(density);
tmpImage.Write(image);