Анимированные GIF-файлы стали очень популярны в последние несколько лет, и их популярность растет с каждым днем. Не согласны? Подумайте вот о чем: ежедневно на Tumblr публикуется более 23 миллионов GIF-файлов. Очевидно, что у этого формата изображений есть аудитория.
Собладает ли это вас создавать GIF-файлы? Если да, то вам будет приятно узнать, что существуют различные редакторы GIF с графическим интерфейсом, которые работают на разных платформах ОС. Однако если вы используете Linux и ищете инструмент командной строки для этой работы, не ищите дальше: мы обсудим Gifsicle – инструмент, который позволяет легко играть с анимированными GIF-файлами.
Примечание : для всех примеров, упомянутых в этой статье, использовалась версия 1.78 Gifsicle.
Гифка
Gifsicle — это инструмент командной строки для создания, редактирования и получения информации об изображениях и анимации GIF. Согласно официальная веб-страница инструмента, Gifsicle предлагает несколько функций, включая оптимизацию изображений, а также контроль над чересстрочной разверткой, комментариями, циклами и прозрачностью. Он «создает хорошие GIF-файлы: удаляет лишние цвета, использует локальные таблицы цветов только в случае кр ContentsГифка
мости (локальные таблицы цветов тратят пространство и могут вызывать артефакты при просмотре) и т. д.»
Загрузка и установка
В Ubuntu (как и в других системах на базе Debian) вы можете легко загрузить и установить инструмент Gifsicle с помощью следующей команды:
sudo apt-get install gifsicle
Кроме того, вы также можете создать его с нуля, используя исходный код, или использовать готовый двоичный файл — оба доступны для загрузки из официальная веб-страница инструмента.
Создать анимированный GIF с помощью Gifsicle
Предположим, у вас есть несколько файлов jpg и вы хотите создать из них анимированный файл gif. Вот как это сделать:
Поскольку команда gifsicle
работает только с файлами gif, сначала вам необходимо преобразовать все файлы.jpg в формат.gif с помощью команды convert
:
convert [input-file-name].jpg [output-file-name].gif
Если количество файлов jpg велико, вы можете использовать следующую команду для конвертации их всех:
convert '*.jpg[Загрузка и установка
resized%03d.gif
После завершения преобразования из jpg в gif общая команда для объединения отдельных изображений в окончательный анимированный файл выглядит следующим образом:
gifsicle [speed of animation] [number of times to loop] [input jpgs] > output.gif
В приведенной выше команде «скорость анимации» можно установить с помощью флага --delay
, а «количество циклов» можно установить с помощью --loopcount
флаг.
Например, у меня была следующая группа изображений в формате JPG.
gifsicle --delay=80 --loopcount=forever *.gif>out.gif
А вот out.gif.
Обратите внимание, что значение --delay
представляет собой задержку между кадрами в сотых долях секунды. Кроме того, я использовал «навсегда» в качестве значения флага --loopcount
. Это делается для того, чтобы анимация не останавливалась. Вы можете использовать любое целочисленное значение, если хотите, чтобы анимация ограничивалась указанным количеством отсчетов.
Извлечение отдельных кадров
Gifsicle также позволяет легко извлекать отдельные кадры из анимированного GIF-файла. Вот пример того, как я это сделал:
gifsicle out.gif '#0' > first-frame.gif
Приведенная выше команда извлекла первый кадр из анимированного файла out.gif. Я просто продолжал менять целочисленное значение после «#» и имя выходного файла и смог извлечь все кадры из out.gif.
Если количество кадров в анимированном gif довольно велико, и вы хотите извлечь их все, то – вполне понятно – будет непрактично запускать приведенную выше команду снова и снова вручную. В этом случае вы можете запустить команду в цикле из сценария оболочки.
Еще одна вещь, о которой стоит упомянуть: с символом «#» также можно использовать отрицательные значения. Отрицательные значения относятся к кадрам с конца. Например, «#-1» вернет вам последний кадр.
Редактировать анимированный GIF
С Gifsicle вы также можете легко редактировать анимированные GIF-файлы. Например, следующая команда создает новый «out.gif», который представляет собой не что иное, как старый «out.gif», первый кадр которого заменен слиянием «a.gif» и «b.gif»:
gifsicle --delay=80 --loopcount=forever -b out.gif --replace '#0' a.gif b.gif
Аналогично вы можете использовать флаг --delete
для удаления кадров. Например, следующая команда удаляет первый кадр «out.gif», в результате чего получается «out-new.gif»:
gifsicle out.gif --delete '#0' > out-new.gif
В анимированный GIF-файл можно не только удалять и заменять, но и добавлять новые кадры. Например, --append
позволяет добавлять кадры в конец анимированного GIF-изображения. Вот пример:
gifsicle out-new.gif --append a.gif > out-new-appended.gif
Приведенная выше команда добавит кадр «a.gif» к анимированному «out-new.gif» и создаст анимированный «out-new-appended.gif» в качестве вывода.
Вы также можете использовать флаг --insert-before
, чтобы добавить кадр (или несколько кадров) в любое место существующего анимированного GIF-изображения.
Преобразование изображения
Gifsicle также предлагает несколько вариантов преобразования изображений. Например, вы можете использовать этот и
Извлечение отдельных кадров
ражений gif. Вы можете использовать флаг--resize [width]x[height]
, чтобы изменить размер изображения gif до определенной ширины и высоты. На странице руководства команды: «Ширина или высота могут быть подчеркиванием «_». Если аргумент равен widthx_, то выходной GIF масштабируется до ширины в пикселях без изменения соотношения сторон.“
Вот как я выполнил операцию изменения размера файла «out.gif»:
gifsicle out.gif --resize 150x_ > out-resize.gif
Приведенная выше команда создала файл с именем «out-resize.gif», который представлял собой не что иное, как измененный размер «out.gif» шириной 150 пикселей.
Заключение
Gifsicle, возможно, не очень популярный инструмент для создания/редактирования GIF-файлов, но он, безусловно, очень полезный. И позвольте мне пояснить: все, что мы здесь обсуждали, — это лишь верхушка айсберга, поскольку этот инструмент предлагает множество функций и опций. Думаю, стоит попробовать — узнайте об этом больше здесь .