tooly

Как сделать GIF маленьким для отправки

Пятисекундная запись экрана превращается в GIF на 20 МБ и упирается в каждый лимит загрузки на своём пути. Мессенджеры ограничивают вложения на бесплатных тарифах, форумы часто пропускают лишь несколько мегабайт, а самые популярные почтовые сервисы отклоняют вложения больше 25 МБ. Для аватаров, слотов под эмодзи и картинок в подписи ограничения ещё строже.

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

Почему GIF такие огромные

Формат появился в 1987 году и создавался для небольшой графики, а не для видео. Каждый кадр хранится как отдельная картинка со сжатием LZW без потерь, которое хорошо справляется с однотонными участками и пасует перед любым шумом. Компенсации движения нет: видеокодек после первого кадра хранит говорящую голову на статичном фоне почти бесплатно, а GIF снова и снова платит за весь кадр целиком.

Кроме того, каждый кадр ограничен 256 цветами. Когда GIF делают из видео с камеры, кодировщик рассыпает по каждому кадру точки дизеринга, чтобы имитировать недостающие оттенки, — и именно эти точки LZW сжимает хуже всего.

Остаётся три рычага, и их эффект перемножается:

  • Частота кадров. Переход с 30 на 12 fps убирает 60% кадров. Большинство GIF для чатов нормально смотрятся при 10–15 fps.
  • Размеры. Объём зависит от количества пикселей, а не от ширины. При масштабе 75% остаётся 56% пикселей, при 50% — четверть.
  • Палитра. Палитра из 64 или 128 цветов, подобранная под конкретную анимацию, сжимается гораздо лучше, чем 256.

Четвёртый рычаг — длительность, и он самый дешёвый: если отрезать скучную секунду в конце цикла, визуально вы ничего не потеряете.

Как ужать готовый GIF

Сжать GIF пересобирает анимацию с помощью FFmpeg, который работает прямо в браузере. Первый проход анализирует всю анимацию и строит одну оптимизированную палитру, второй перерисовывает каждый кадр под неё с упорядоченным дизерингом: он оставляет регулярный узор, который сжимается намного лучше случайного шума.

  1. Выберите уровень. По умолчанию стоит «Среднее».
  2. Перетащите один или несколько GIF. В каждой строке виден размер до и после.
  3. Если результат всё ещё слишком большой, удалите его, переключитесь на следующий уровень и перетащите оригинал заново.

Что делают уровни, в цифрах:

  • «Лёгкое»: 15 fps, исходные размеры, до 256 цветов. Для демонстраций интерфейса, где каждый пиксель текста должен оставаться читаемым.
  • «Среднее»: 12 fps, 75% ширины и высоты, до 128 цветов. Правильная первая попытка для GIF-реакций и записей, которыми делятся в чате.
  • «Сильное»: 10 fps, половина ширины и высоты, до 64 цветов. Рассчитано на жёсткие лимиты: число кадров и пикселей вместе падает до малой доли от исходного.

Тайминг сохраняется на любом уровне. Трёхсекундный цикл по-прежнему длится три секунды, просто рисуется меньшим числом кадров. Принимаются файлы до 100 МБ, и ничего не покидает ваше устройство.

Какой уровень для какого контента

  • Записи экрана и демонстрации интерфейса хорошо переносят сокращение цветов, но страдают от уменьшения размеров: мелкий текст превращается в кашу. Начните с «Лёгкого»; если не хватит, в следующий раз запишите область поменьше, а не переходите на «Сильное».
  • Стикеры, логотипы и плоские иллюстрации с горсткой цветов при 64 цветах выглядят почти так же, поэтому «Сильное» обычно подходит.
  • Фрагменты видео с камеры с телесными тонами, небом и градиентами при 64 цветах заметно расслаиваются на полосы. Безопасный потолок — «Среднее».
  • Пиксель-арт масштабировать нельзя никогда. Используйте «Лёгкое».

Начните с видео, если оно сохранилось

Если GIF сделан из видео и исходник у вас остался, пересобрать его часто выгоднее, чем выжимать готовый GIF: вы с самого начала управляете настройками.

  1. Обрежьте клип до нужного момента инструментом Обрезать видео. Для цикла обычно хватает трёх секунд.
  2. Откройте Конвертировать видео в GIF и выберите ширину и частоту кадров. Для чата надёжный вариант — 320 или 480 px при 10 fps; 640 px берите только для записей экрана с текстом.
  3. Сконвертируйте. Если результат чуть превышает лимит, прогоните его через «Сжать GIF» на уровне «Среднее».

«Конвертировать видео в GIF» всегда отсчитывает максимальную длительность от 0:00, поэтому важно сначала обрезать видео: иначе вы получите первые секунды ролика, а не нужный фрагмент.

Решение получше, если площадка позволяет

Если площадка, куда вы публикуете, принимает видео, отправьте MP4. Те же пять секунд, которые в GIF весят 20 МБ, в H.264 часто занимают несколько сотен килобайт — в полном цвете и с полной частотой кадров. Большинство современных мессенджеров воспроизводят короткие беззвучные ролики прямо в ленте и по кругу, так что получатель видит практически то же самое. Некоторые мессенджеры даже незаметно конвертируют загруженные GIF в видео — именно по этой причине.

Сжать видео выдаёт MP4 в H.264; для чата хорошо подходит пресет «Среднее». Для беззвучного цикла звуковую дорожку всё равно хранить незачем.

GIF остаётся единственным вариантом там, где видео не разрешено или не запускается автоматически: в теле письма и подписях, в README-файлах на некоторых хостингах, на старых форумных движках, в слотах для своих эмодзи и аватаров, а также в инструментах документации, которые вырезают видео. Там используйте GIF, а везде остальное — видео.

Типичные ситуации

  • Мессенджер отклоняет файл как слишком большой. Сначала попробуйте «Среднее». Если GIF сделан из записи экрана длиннее десяти секунд, укоротите исходник, а не переходите на «Сильное».
  • Форум ограничивает вложения несколькими мегабайтами. «Сильное», а если и этого мало — пересоберите из исходного клипа в 320 px и 8–10 fps.
  • Подпись в письме или рассылка. Держите анимацию в пределах нескольких сотен килобайт: маленькие размеры, мало кадров, «Сильное». Крупные анимированные картинки замедляют открытие писем, а некоторые почтовые клиенты показывают только первый кадр.
  • GIF-реакция для группового чата. Ширины 320 px на экране телефона более чем достаточно. В двухсекундной реакции 10 fps никто не заметит.

Решение проблем

  • Файл почти не уменьшился. Исходник уже был оптимизирован: маленький, с низкой частотой кадров или с небольшим числом цветов. Поднимитесь на уровень выше. Если оригинал идёт с частотой 10 fps или ниже, «Лёгкое» может даже добавить кадры, так что сразу переходите к «Среднему» или «Сильному».
  • На градиентах появились полосы. Это палитра из 128 или 64 цветов. Вернитесь на уровень полегче или обрежьте небо либо мягкий фон.
  • Проступила мелкая сетчатая текстура. Это узор упорядоченного дизеринга, сильнее всего заметный на плавных градиентах при «Сильном».
  • В одной сцене странные цвета. Вся анимация использует одну палитру, поэтому короткой сцене в необычных цветах достаётся мало мест в палитре. Вырезать эту сцену поможет больше, чем любая настройка.
  • Страница будто зависла. Движок FFmpeg загружается один раз при первом использовании, а дальше работает локально. Большой GIF может обрабатываться до минуты на ноутбуке и дольше на телефоне.

Чек-лист

  1. Принимает ли площадка MP4? Если да, отправьте сжатый MP4.
  2. Прежде всего сократите длительность до нужного фрагмента.
  3. Для чата ориентируйтесь на 320–480 px при 10–12 fps.
  4. Сжимайте на уровне «Среднее»; на «Сильное» переходите только при жёстких лимитах.
  5. Перед отправкой проверьте результат в реальном размере отображения.

Опубликовано 2026-10-08