Как я могу создать анимированный 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}"
Другие вопросы по тегам