ImageMagick добавляет большие файлы с помощью команды Stream

Kevin спросил: 13 июня 2018 в 03:21 в: image-processing

Нам нужно добавить два очень больших файла TIF по вертикали, используя ImageMagick, но мы очень ограничены в памяти и дисковых ресурсах, потому что мы пытаемся сделать это на AWS Lambda .

В настоящее время мы используем очень простой подход ...

magick convert image1.tif image2.tif -append result.tif

Это работает, но из-за размера каждого изображения потребление памяти и диска слишком высока, и мы сталкиваемся с проблемами ресурсов.

ImageMagick имеет команду "поток" (https://www.imagemagick.org/script/stream.php), но я не могу найти примеров того, как мы может использовать его для того, что мы пытаемся сделать.

Мы пробовали другие подходы, такие как опция -limit, но мы все еще сталкиваемся с проблемами. Я пытаюсь определить, как это можно сделать с помощью команды "поток", если это вообще возможно. Я видел "поток", предложенный для этого варианта использования, но примеров не было.

Любая помощь была высоко оценена!

1 ответ

Mark Setchell ответил: 14 июня 2018 в 03:19

Я не на машине для тестирования, но я подозреваю, что вы можете добиться этого, используя гораздо меньше памяти и времени, с помощью vips.

Я думаю, что вы захотите это в командной строке:

vips join input1.tif input2.tif result.tif vertical

Добавить окончательный параметр --vips-leak, чтобы проверить используемую общую память.

join документируется здесь:

http://jcupitt.github.io/libvips/API/current/libvips-conversion.html#vips-join

Есть узел , PHP, Python, Ruby и т. Д.


Я создал два файла TIF размером 10 000 × 10 000 пикселей и выполнил ту же операцию добавления с ImageMagick и vips:

ImageMagick: 11 seconds and 4.86GB memory used
vips:         4 seconds and 157 MB memory used
Kevin ответил: 14 июня 2018 в 11:18
Да, я работаю над переходом на VIPS. Благодаря!

Дополнительное видео по вопросу: ImageMagick добавляет большие файлы с помощью команды Stream

Command Line TV #7: ImageMagick

Resizing Active Storage Image Uploads With MiniMagick | Ruby On Rails 5.2 Tutorial

Imagemagick for CHADS!: Canvases, Plasma, Composites, Geometry