ImageMagick的`convert`实用程序占用PDF输入的“太多”内存


11

我经常使用ImageMagick的convert*-> PNG转换,但是当PDF超过50页时– convert占用的内存超过3 Gib(!!!)。我想它首先加载了所有内容。

那是不可接受的。它应该一页一页地阅读PDF,为什么立刻全部阅读!

也许有一种方法可以调整它?还是任何好的替代品?

Answers:


10

解决了以下问题:

cat <<EOF > /etc/profile.d/ImageMagick.sh
# Set ImageMagick memory limits: it eats too much
export MAGICK_MEMORY_LIMIT=1024 # Use up to *MB of memory before doing mmap
export MAGICK_MAP_LIMIT=1024    # Use up to *MB mmaps before caching to disk
export MAGICK_AREA_LIMIT=4096   # Use up to *MB disk space before failure
export MAGICK_FILES_LIMIT=1024  # Don't open more than *file handles
EOF

9

您是否尝试过缓存?

从手册页

缓存阈值

      megabytes of memory available to the pixel cache.

      Image pixels are stored in memory until 80 megabytes of
      memory have been consumed.  Subsequent pixel operations

      are cached on disk.  Operations to memory are  significantly 
      faster but if your computer does not have a sufficient 
      amount of free memory you may  want  to  adjust
      this threshold value.

1
这是一个选择convert吗?我只有“限制类型值像素缓存资源限制”。加上您的报价说“默认值为80Mb”,但我的转换
占用了

如果仅添加-cache而后没有值,则默认值为80Mb。
Shikoru,2009年

1
嗯,我的IMagick只有“ -limit memory 64”(限制内存64),以将其内存限制为64MB。可以,谢谢!:)
kolypto

2
找到:“ -cache <阈值>(此选项已由-limit选项替换)”
kolypto

1
@kolypto在我的解释中,ImageMagick网站说默认单位为字节:“文件的值以文件数为单位。其他限制以字节为单位。使用SI定义内存,映射,区域和磁盘资源限制的参数前缀(例如100MB)。” imagemagick.org/script/command-line-options.php#limit
thomasa88

9

我正在使用以下内容:

convert -limit memory 64 -limit map 128 original.djvu newfile.pdf

我的主驱动器空间有限,因此我要在变量前添加

env MAGICK_TMPDIR=/host/Temp convert -limit memory 64 -limit map 128 original.djvu newfile.pdf

在使用-limit磁盘时,似乎可以使用它。imagemagick正在使用尽可能多的内存和磁盘似乎很奇怪...因为肯定可以一次只渲染一页...但是我想可能正在发生一些并行性。
Att Righ
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.