Утиліта "конвертування" ImageMagick займає * занадто багато * пам'яті з введенням 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? У мене є лише "-обмежити обмеження ресурсу кеш-піксельного значення". Плюс у вашій цитаті сказано: "80Mb є типовим", але моя конвертація з'їдає всю оперативну пам'ять :)
kolypto

80Mb може бути за замовчуванням, якщо ви просто додаєте кеш-пам'ять без значення після нього.
Шикору

1
Гм, мій IMagick має лише "-обмежити пам'ять 64", щоб обмежити його пам'ять до 64 Мб. Це працює, все-таки спасибі! :)
колипто

2
Знайдено: "-cache <threshold> (Цю опцію було замінено опцією -limit)"
kolypto

1
@kolypto У моєму трактуванні веб-сайти ImageMagick говорять, що одиниця за замовчуванням - байти: "Значення для файлу в кількості файлів. Інші межі знаходяться в байтах. Визначте аргументи для обмежень пам'яті, карти, області та дискових ресурсів за допомогою SI префікси (.eg 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.