我正在努力使用Magick.NET库,因为在将图像文件转换为pdf时,我的内存使用量超过4GB,CPU使用率为100%。转换完成后,它们都恢复正常。但由于我在一个应用程序的许多实例中使用这个特定的第三方,它会导致巨大的内存丢失。
images.Write(newPdfPath);
上存在问题using (MagickImageCollection images = new MagickImageCollection())
{
images.Read(orginalImage);
images.Write(newPdfPath);
}
图像尺寸不同,实际上并没有多大关系,因为当转换大小为7 KB的jpg时,问题也存在。
请帮助!!!!
答案 0 :(得分:1)
cpu和内存分配与硬盘驱动器上的映像大小无关。它与您拥有的像素数完全相关。如果你有一个20000像素乘20,000像素的完全白色图像,你硬盘上的这个文件的大小可以是6 MG但是当你用Magick.net将它加载到内存中它将是千兆字节。首先,您必须查看图像的大小(以像素为单位),然后我们可以判断性能。 然后,您可以使用这些方法来提高性能:
将图像加载到内存后,您可以将其写入具有.mpc格式的HDD,然后可以非常快速地将其加载到内存中。 (如果你需要加载你的图像几次)
使用Magikc.net q8代替q16
如果你可以在并行循环上运行命令,那么Magick.net版本7的运行速度几乎快4倍。
另一个答案是说你必须在完成后处理你的图像。
答案 1 :(得分:0)
如果您在循环中转换图像,那么在转换完成后处理每个图像可能会有所帮助。使用
Image.Dispose();
方法,以释放图像使用的非托管内存资源。