инструменты командной строки ImageMagick признают следующую переменную окружения:
MAGICK_TEMPORARY_PATH
Это устанавливает путь для хранения временных файлов. Он действителен для всех команд, запущенных во время установки этой переменной.
Альтернативный метод заключается в добавлении -define registry:temporary-path=...
к конкретной команде, например:
convert \
-define registry:temporary-path=/Volumes/external/tmp \
wizard: \
-resize 250000x250000 \
wizard-250000x250000px.miff
Это справедливо лишь для той единственной команды. (BTW, wizard:
- это встроенный образец изображения в ImageMagick - вы всегда можете использовать его в качестве примера для тестирования команд ImageMagick, если вы играете с ними.)
Чтобы предотвратить большие изображения от использования всей памяти в вашей системе, вы можете принудительно пикселы изображения в памяти отображенный диск с ограничениями ресурсов, путем добавления -limit memory ...
:
convert \
-define registry:temporary-path=/Volumes/external/tmp \
-limit memory 16mb \
wizard: \
-resize 250000x250000 \
wizard-250000x250000px.miff
вы можете даже заставить все пикселей изображения на диск, используя -limit area 0
:
convert \
-define registry:temporary-path=/Volumes/external/tmp \
-limit area 0 \
wizard: \
-resize 250000x250000 \
wizard-250000x250000px.miff
Однако имейте в виду: кеширование пикселей на диск на несколько порядков медленнее, чем использование ОЗУ. Коэффициент составляет около 1000! (SSD быстрее, конечно.) Ожидайте секунды, что в противном случае занимает миллисекунды и часы, что обычно занимает минуты ...
Для этих случаев, это довольно удобно -monitor
ход обработки:
convert \
-monitor \
-limit memory 1GiB \
-limit map 2GiB \
-define registry:temporary-path=/Volumes/external/tmp \
wizard: \
-resize 250000x250000 \
logo-250000x250000px.miff
В -monitor ...
дополнения будут отображаться динамически изменяющийся строки состояния выполнения в терминале говоря что-то вроде
resize image[WIZARD]: 24999 of 43750, 57% complete
Установка -limit
может применяться к area
, disk
, file
, map
, memory
, thread
, или time
. file
устанавливает количество файлов, area
, memory
и map
устанавливает количество байтов (префиксы SI разрешены), time
- в секундах.
Вы можете запросить установку ImageMagick для текущего (или по умолчанию) настройки, запустив
identify -list resource
я получаю:
File Area Memory Map Disk Thread Throttle Time
-------------------------------------------------------------------------------
192 4.295GB 2GiB 4GiB unlimited 1 0 unlimited
Для командной строки -limit
настройки существуют соответствующие переменные окружения тоже. К ним относятся:
MAGICK_AREA_LIMIT
MAGICK_DISK_LIMIT
MAGICK_FILE_LIMIT
MAGICK_MEMORY_LIMIT
MAGICK_MAP_LIMIT
MAGICK_THREAD_LIMIT
MAGICK_TIME_LIMIT
Эти ограничения ресурсов для области изображения используемого дискового пространства, открытых файлов, куча памяти, карта памяти, количество потоков выполнения, и максимальное время, прошедшее в секундах.