ImageMagickの `convert`ユーティリティはPDF入力で*メモリが多すぎます*


11

私はよくImageMagick convertを*-> PNG変換に使用しますが、PDFが50ページconvertを超える場合、3ギブ(!!!)以上のメモリを消費します。最初にすべてをロードすると思います。

それは受け入れられません。PDFをページごとに読む必要があります。なぜそれらすべてを一度に実行するのですか。

たぶん、どうにかしてそれを調整する方法はありますか?または何か良い選択肢はありますか?

回答:


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ですか?「-limit type value pixel cache resource limit」しかありません。さらに、あなたの引用は「80Mbがデフォルトです」と言います、しかし私の変換はすべてのRAMを食べます:)
kolypto

それに続く値なしで-cacheを追加するだけの場合、80Mbがデフォルトになる場合があります。
Shikoru

1
うーん、IMagickには「-limit memory 64」しかなく、メモリを64MBに制限しています。とにかくそれはうまくいきます!:)
kolypto 2009

2
見つかりました: "-cache <threshold>(このオプションは-limitオプションに置き換えられました)"
kolypto 2009

1
@kolypto私の解釈では、ImageMagickのWebサイトでは、デフォルトの単位はバイトであると述べています。接頭辞(例:100MB)。」 imagemagick.org/script/command-line-options.php#limit
thomasa88

8

私は以下を使用しています:

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がメモリとディスクを大量に使用しているのは奇妙に思われます...確かに一度に1ページしかレンダリングできないためです...しかし、並列処理が行われている可能性があります。
肥満児RIGH
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.