ImageMagick использует более 2 ГБ памяти для преобразования PDF-файлов

ImageMagick использует огромные объемы памяти для преобразования PDF-файлов — более 2 ГБ. Я использую команду:

convert -density 250 -resize 1280x myfile.pdf -interlace plane -strip -quality 40 -alpha flatten myfolder/myfile-%03d.jpg

Как это можно улучшить? У меня лимит 1гб а то процесс безжалостно убивается. ):


person MaiaVictor    schedule 13.03.2013    source источник


Ответы (1)


Используйте опцию ограничения памяти.

Вариант использования показан здесь:

http://www.imagemagick.org/script/command-line-options.php#limit

-предельное значение типа

Установите лимит ресурсов кэша пикселей.

Выберите из: area, disk, file, map, memory, threads или time.

Значение для file указано в количестве файлов. Другие ограничения указаны в байтах. Определите аргументы для ограничений памяти, карты, области и дисковых ресурсов с префиксами SI (например, 100 МБ).

По умолчанию ограничения составляют 768 файлов, 3 ГБ области изображения, 1,5 ГБ памяти, 3 ГБ карты памяти и 18,45 ГБ на диске. Эти ограничения корректируются относительно доступных ресурсов на вашем компьютере, если эта информация доступна. Когда достигается какой-либо предел, ImageMagick каким-то образом дает сбой, но пытается предпринять компенсирующие действия, если это возможно. Например, следующие ограничения памяти:

-ограничение памяти 32 МБ - ограничение карты 64 МБ

person Randy Howard    schedule 13.03.2013
comment
Это не работает. Я получаю сообщение об ошибке, указывающее, что ему не удалось выделить достаточно ресурсов. - person MaiaVictor; 13.03.2013
comment
Это пример набора значений из документации по параметрам командной строки. Возможно, вам придется использовать более высокие ограничения, чем для вашего конкретного использования, настроек качества и т. Д. Например, попробуйте что-то, что будет удерживать его ниже ограничения в 1 ГБ, которое вы изначально указали в своем вопросе. Если вам все еще нужно больше, вам, возможно, придется снизить качество преобразования, чтобы соответствовать объему оперативной памяти, которую вы можете использовать в своем процессе. - person Randy Howard; 13.03.2013
comment
Это работает для меня. convert будет убит, и я буду испытывать периодические зависания при вызове convert *.png out.pdf. Перемежающиеся зависания все еще случаются, но менее серьезные. Кроме того, я установил `-limit thread 2` - person Michael Franzl; 20.04.2014