0

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

在线图像存在问题.Write(newPdfPath);

using (MagickImageCollection images = new MagickImageCollection())
        {
            images.Read(orginalImage);

            images.Write(newPdfPath);
        }

图像大小不同,大小并不重要,因为在转换大小为 7 KB 的 jpg 时,问题也存在。

请帮忙!!!!

4

2 回答 2

1

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

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

使用 Magikc.net q8 而不是 q16

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

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

于 2016-10-11T11:07:22.263 回答
0

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

Image.Dispose();

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

于 2016-09-27T14:33:42.303 回答