Назад | Перейти на главную страницу

Утилита ImageMagick `convert` занимает * слишком много * памяти при вводе PDF

Я часто использую ImageMagick convert для преобразования * -> PNG, но если PDF содержит более 50 страниц - convert кушает больше 3 Гиб (!!!) памяти. Я думаю, он сначала все загружает.

Это недопустимо. Он должен читать PDF постранично, черт возьми, все сразу!

Может есть способ как-нибудь настроить? Или какие-нибудь хорошие альтернативы?

Решается следующим образом:

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

Я использую следующее:

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

Вы пробовали кешировать?

Со страницы руководства

-cache threshold

      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.