VideoKit

Сжатие GIF

Уменьшайте слишком тяжёлые анимированные GIF, чтобы уложиться в ограничения стикеров, вложений на форумах, почты и быстрой загрузки страниц

Три рычага сразу

Размер кадра, число кадров и качество цвета настраиваются по отдельности — одно только уменьшение размера вдвое обычно сокращает файл примерно вчетверо

Прореживание не меняет темп

Время удалённого кадра переходит к соседнему, поэтому общая длительность и ритм сохраняются — ничего не превращается в перемотку

Локальная обработка без загрузки на сервер

Декодирование и перекодирование целиком идут в браузере: файлы не покидают устройство, ограничений по размеру и количеству нет

Сценарии использования

  • Пользовательские стикеры WeChat ограничивают GIF размером 1 МБ и 240×240 — превышающую анимацию можно добавить сразу после сжатия
  • На форумах и в сообществах есть лимиты на вложения и изображения, и GIF-запись экрана в несколько десятков мегабайт просто не загрузится
  • Демонстрационные анимации в документации, README и описаниях продукта после сжатия грузятся быстрее и перестают тормозить чтение
  • Вложения в письмах обычно ограничены 10–25 МБ, поэтому длинную анимацию приходится облегчать перед отправкой

Почему GIF такие тяжёлые и что вообще можно сжать

GIF — формат 1987 года: в каждом кадре допустимо не более 256 цветов, а межкадрового сжатия, как в современном видео, здесь нет. Поэтому один и тот же материал в GIF часто весит более чем в десять раз больше, чем в MP4. Сжимать остаётся только три вещи: размер кадра, число кадров и количество цветов в кадре.

Инструмент декодирует GIF покадрово с помощью gifuct-js (восстанавливая каждый кадр до полного изображения по правилам disposal формата GIF), затем заново квантует палитру и кодирует результат через gif.js. Из трёх настроек больше всего даёт размер — половинные ширина и высота оставляют четверть пикселей; следом идёт прореживание кадров; качество цвета экономит меньше, но полезно, когда не хочется жертвовать размером. Все вычисления выполняются локально в браузере.

Похожие инструменты для GIF

Если нужный размер всё равно недостижим, стоит сменить формат: в виде видео анимация становится на порядок легче — воспользуйтесь GIF в видео. В обратную сторону: Видео в GIF вырежет анимацию из ролика, а Изображения в GIF соберёт её из фотографий, после чего можно вернуться сюда и сжать результат.

Часто задаваемые вопросы

Насколько сильно можно сжать GIF?

Зависит от исходника и настроек. Наибольший эффект даёт размер: если уменьшить ширину и высоту вдвое, останется лишь четверть пикселей, и файл обычно падает до 25–35 % от исходного. Если дополнительно убрать каждый второй кадр, большинство GIF выходят примерно на 15 %. Если менять только качество цвета, не трогая размер и кадры, экономия обычно составляет 10–30 %.

Ускоряется ли анимация, если убрать кадры?

Нет. Время показа удалённого кадра прибавляется к предыдущему сохранённому кадру, поэтому общая длительность и скорость воспроизведения остаются прежними — снижается только плавность. Если у GIF и так низкая частота кадров, лучше оставить все кадры.

Как уложить GIF в ограничение по размеру для стикеров?

Например, пользовательские стикеры WeChat ограничены 1 МБ и 240×240. Сначала выберите вариант размера, при котором ширина и высота укладываются в 240, затем уберите каждый второй кадр, оставьте качество цвета на «Сбалансированном» и посмотрите вес в блоке результата. Если всё ещё много — переключите качество цвета на «Минимальный вес» или уменьшите размер сильнее.

Почему после сжатия GIF стал больше?

Некоторые GIF изначально очень агрессивно оптимизированы — каждый кадр хранит лишь крошечную изменившуюся область, — а при перекодировании каждый кадр записывается как полное изображение, что сводит эту оптимизацию на нет. В таком случае поставьте размер 50 % или меньше либо уберите каждый второй кадр, и вес снова уменьшится.

Будет ли мой GIF загружен на сервер?

Нет. Декодирование, масштабирование и перекодирование целиком выполняются локально в вашем браузере. GIF не покидает ваше устройство и никуда не загружается.

Не подвиснет ли браузер при сжатии большого GIF?

Сжатие декодирует, а затем заново кодирует каждый кадр, поэтому чем больше кадров, тем дольше процесс: анимация в несколько сотен кадров на телефоне может занять заметное время. Если главная цель — уменьшить файл, снижение размера до 50 % заодно существенно сокращает и время обработки.