Как создать анимированный GIF в Ubuntu, используя набор изображений?

Как создать анимированный GIF в Ubuntu, используя набор изображений?

У меня есть набор из примерно 500 изображений JPEG. Общий размер набора составляет около 60 МБ, а каждое изображение имеет размеры 480 x 270. Я хочу преобразовать эти изображения в анимированный GIF.

Я попытался преобразовать эти изображения в анимированный GIF следующим образом на моей системе i7 с 16 ГБ оперативной памяти:

export MAGICK_THREAD_LIMIT=1
convert -delay 5 -loop 0 -layers optimize -limit memory 64 *.jpg output.gif

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

Итак, какой же способ создания анимированного GIF-изображения подойдет лучше всего в Ubuntu?

решение1

Следующая процедура предотвращает чрезмерное потребление системных ресурсов ImageMagick. Она была протестирована с ImageMagick 6.8.9-9 на Ubuntu 15.04. Для иллюстрации процедуры я использую пример преобразования видео в анимированный GIF.

Настройте ImageMagick таким образом, чтобы он не потреблял чрезмерно много системных ресурсов:

export MAGICK_MEMORY_LIMIT=1024
export MAGICK_MAP_LIMIT=1024
export MAGICK_AREA_LIMIT=4096
export MAGICK_FILES_LIMIT=1024
export MAGICK_THREAD_LIMIT=1
export MAGICK_TMPDIR=/home/user/tmp

Переменная окружения MAGICK_THREAD_LIMITограничивает количество потоков, используемых ImageMagick (когда он собран с включенным OpenMP). Переменная окружения MAGICK_TMPDIR— это путь к каталогу, в котором ImageMagick может хранить временные файлы. Это особенно полезно для кадровых изображений относительно большого размера, поскольку позволяет избежать чрезмерного использования оперативной памяти.

Подготовьте имя входного файла, имя выходного файла и каталог, в котором будут храниться изображения кадров.

filename1=2015-11-09T1300Z.mp4
filename2=2015-11-09T1300Z.gif
directoryName1="tmp_images"

Преобразуйте видео в ряд кадровых изображений (установив соответствующие ограничения по времени; в этом примере от 0 секунд до 30 секунд).

mplayer -ao null -ss 0:00:00 -endpos 30 "${filename1}" -vo jpeg:outdir="${directoryName1}":quality=100

Если это оправдано ограничениями по размеру выходного файла, уменьшите размер видеокадров (в данном примере на 50%).

mogrify -resize 50% "${directoryName1}"/*.jpg

Используйте ImageMagick для преобразования изображений рамок в анимированный GIF-файл.

convert -delay 5 -loop 0 -layers optimize -limit memory 64 "${directoryName1}"/*.jpg "${filename2}"

Связанный контент