Magick.NET C# - 巨大的内存使用量

时间:2016-09-27 14:21:37

标签: c# memory cpu magick.net

我正在努力使用Magick.NET库,因为在将图像文件转换为pdf时,我的内存使用量超过4GB,CPU使用率为100%。转换完成后,它们都恢复正常。但由于我在一个应用程序的许多实例中使用这个特定的第三方,它会导致巨大的内存丢失。

images.Write(newPdfPath);

上存在问题
using (MagickImageCollection images = new MagickImageCollection())
        {
            images.Read(orginalImage);

            images.Write(newPdfPath);
        }

图像尺寸不同,实际上并没有多大关系,因为当转换大小为7 KB的jpg时,问题也存在。

请帮助!!!!

2 个答案:

答案 0 :(得分:1)

cpu和内存分配与硬盘驱动器上的映像大小无关。它与您拥有的像素数完全相关。如果你有一个20000像素乘20,000像素的完全白色图像,你硬盘上的这个文件的大小可以是6 MG但是当你用Magick.net将它加载到内存中它将是千兆字节。首先,您必须查看图像的大小(以像素为单位),然后我们可以判断性能。 然后,您可以使用这些方法来提高性能:

将图像加载到内存后,您可以将其写入具有.mpc格式的HDD,然后可以非常快速地将其加载到内存中。 (如果你需要加载你的图像几次)

使用Magikc.net q8代替q16

如果你可以在并行循环上运行命令,那么Magick.net版本7的运行速度几乎快4倍。

另一个答案是说你必须在完成后处理你的图像。

答案 1 :(得分:0)

如果您在循环中转换图像,那么在转换完成后处理每个图像可能会有所帮助。使用

Image.Dispose();

方法,以释放图像使用的非托管内存资源。