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