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 倍。

正如另一个答案所说,您必须在图像完成后对其进行处理。