ImageMagick преобразовывают и низкая RAM

Рассмотрите следующую команду для imagemagick пакета:

sudo convert -resize 460x200 /path/to/test1.jpg /path/to/test2.jpg

Теперь test1.jpg довольно большое изображение (12.5 МБ), но не неслыханные размеры, но сервер, от которого я работаю только, имеет 1G памяти (Amazon EC2 t2.micro, если это помогает),

Никакая ошибка не бросается, и все же нет test2.jpg создается. Я протестировал это с меньшими изображениями, и это хорошо работает. Я думал бы 1G, если память будет много для управления изменением размер, но возможно нет?

Каковы мои опции, я должен получить больше памяти, или я пропускаю что-то?

Любые предложения очень приветствуются!

Требуемые редактирования

strace производят шоу: +++ killed by SIGKILL +++ наряду с большим количеством команд, которые выглядят нормальными (открытие /usr/share/local и чтение длинных строк, которые я принимаю, является данными изображения),

свободный дает мне:

         total       used       free     shared    buffers     cached
Mem:       1016292     278348     737944       6412        460      13356
-/+ buffers/cache:     264532     751760
Swap:            0          0          0

Таким образом, выглядит, как будто подкачка не включена, таким образом, я изучу создание своп-файла, чтобы видеть, сортирует ли это мои проблемы.

Файл дает мне:

testprint10Mbv2.jpg: JPEG image data, EXIF standard

Я также вставил бы полный/path/to/img, но к сожалению он содержит уязвимые данные (клиентские адреса электронной почты и т.д.)

12
задан 27 January 2016 в 07:24

2 ответа

Я предполагаю, что у Вас заканчивается RAM. Можно проверить это с watch cat /proc/meminfo, в то время как процесс работает.

Вы можете иметь недостаточную RAM и/или ПОДКАЧАТЬ для выполнения задачи.

из-за условия низкого поршня, обеспечьте, чтобы подкачка шла с swapon -a и если никакая подкачка не является установкой в системе, создают раздел для подкачки на неиспользованном дисковом пространстве и включают его. Это, вероятно, решит проблему. Существует хороший ответ @Takkat о том, как сделать это здесь , Если у Вас нет доступа к разделению сервера, можно также использовать своп-файл для подкачки

7
ответ дан 23 November 2019 в 03:41

Вопрос в вопросе был решен путем добавления соответствующей подкачки. Поскольку полнота позволила мне дать сводку дополнительных опций, мы имеем при выполнении Изображения Magick convert на огромных файлах в низких системах памяти, или то, когда нет никакой доступной подкачки, или подкачки, было слишком маленьким.

Методы, упомянутые ниже, разрабатываются подробно в Изображении руководство Magick:

Действительно Крупная обработка изображения


Сводка:

  1. Ограничьте использование памяти с опцией -limit

    Таким образом Magick Изображения создаст временный файл для обработки изображения, как только данные пределы памяти были превышены. Это должно записать разрешение для Изображения Magick на временном каталоге файла. Мы можем дать любой путь, где временный файл будет создан в переменной среды MAGICK_TMPDIR. Команда в качестве примера может выглядеть подобной этому:

        env MAGICK_TMPDIR=/tempdir nice -5 convert -limit memory 32 -limit map 32 largefile.jpg -resize 640x320 smallfile.png
    

    Работа над диском, а не в RAM значительно замедлит скорость обработки.

  2. Работа с "дисковыми файлами с отображенной памятью"

    Создание файлов MPC является требованием ресурса, но не требуется так много ресурсы для преобразования из файлов MPC. Поэтому, может быть помещен в соображение в случае, если мы должны преобразовать тот же источник с различными параметрами несколько раз. Рабочий процесс может затем быть подобен этому:

    convert huge.jpg huge.mpc
    convert huge.mpc -resize 50% big.png
    convert huge.mpc -resize 20% small.png
    convert huge.mpc -resize 5% thumb.png
    
  3. Работа над маленькими разделами использования изображения stream

    Используя поток утверждает, что только обработал часть исходного изображения без потребности загрузить целое изображение в память.

    stream -map rgb -storage-type char -extract 600x400+1900+2900 image.png - | convert -depth 8 -size 600x400 rgb:- tile.png
    

    В вышеупомянутом примере -extract опция берет размер и значения смещения, как определено Изображением геометрия Magick. Мы должны будем засунуть мозаики назад вместе к получению масштабированного изображения в целом. К сожалению, поток не работает на все форматы изображения, но, как предполагается, хорошо работает на изображениях JPEG.

5
ответ дан 23 November 2019 в 03:41

Другие вопросы по тегам:

Похожие вопросы: