MiniPNG

Онлайн-сжатие GIF изображений

Сжимайте GIF и узнайте, почему размер так сильно меняется

Минутку...(/)

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

Отлично, мы успешно сжали ваши изображения.

Изображения оптимизированы.

Сжимайте изображения GIF и узнайте, почему степень сжатия так сильно различается

Загрузите два GIF-файла на эту страницу, и один уменьшится на 40 процентов, а другой — совсем не изменится. Это не ошибка инструмента, и важно понимать причину до загрузки, потому что именно это чаще всего сбивает с толку при работе с GIF. У GIF нет ползунка качества. Внутри него нечего «обменять» на меньший размер, как это возможно у JPEG. Всё, что может сделать сжиматель GIF — это убрать повторения, поэтому результат почти полностью зависит от того, сколько повторяющихся данных было в вашем файле изначально.

Где на самом деле находятся байты в GIF

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

Поэтому задача — объединить эти палитры каждого кадра в одну общую таблицу и перестать повторно сохранять то, что не изменилось. Ни один из этих шагов не затрагивает ваши цвета. В первом тесте ниже 29 отдельных палитр кадров были объединены в одну глобальную таблицу, файл потерял 40 процентов веса, а четыре выбранных цвета остались абсолютно такими же, как были на входе.

Что мы измеряли

Мы пропустили через эту страницу шесть файлов и записали количество байт на выходе.

ФайлИсходныйРезультатИзменение
Анимация с записи экрана, 30 кадров, 640 на 40041 699 байт24 994-40,1%
Одиночный кадр с прозрачным фоном1 990 байт1 861-6,5%
Анимация уже плотно закодирована, 24 кадра334 312 байт334 027-0,1%
Одиночный кадр уже на одной компактной палитре56 676 байт56 6760%
Восьмикадровая анимация с комментариями, XMP, GPS и цветовым профилем15 850 байт9 953-37,2%
PNG, загруженный на эту страницу703 830 байт74 379-89,4%

Файл с 40 процентами и файл с 0 процентами прошли через один и тот же инструмент

В первой строке — запись экрана: тридцать кадров, большая часть холста одинакова от кадра к кадру, и почти у каждого кадра своя палитра. Было много повторений для удаления. В пятой строке — одиночный кадр уже на компактной палитре из 256 цветов, поэтому убирать было нечего, и он вернулся ровно с тем же размером — 56 676 байт.

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

Ваша анимация возвращается анимацией

Мы проверили это на уровне байтов, а не просто посмотрев воспроизведение. Сжатый файл с тридцатью кадрами по-прежнему содержал тридцать кадров, тридцать блоков времени с исходной задержкой в 80 миллисекунд и расширение цикла, которое сообщает браузеру повторять анимацию. Размер холста остался 640 на 400. Ничто не было преобразовано в статичное изображение, и ни один кадр не был удалён ради красивой цифры.

Прозрачность сохраняется, как и ваши точные цвета

Прозрачный GIF стал меньше на 6,5 процента. Мы нарисовали результат на холсте и считали четыре пикселя: угол остался полностью прозрачным, красный — всё так же 220, 40, 60, а белый — абсолютно чисто-белым. Та же проверка для тридцатикадровой анимации показала, что её синий в заголовке, серый страницы, серый строки и красная рамка не изменились после уменьшения на 40 процентов. Экономия достигается за счёт удаления повторений, а не приближения цветов, и именно этого стоит ожидать.

Если файл всё равно слишком большой после сжатия

Сжиматель может удалить только то, что повторяется. Он не может решить, что ваша анимация слишком длинная или что ей не нужно быть шириной 800 пикселей. Эти решения принимаются до загрузки файла на страницу, и именно они определяют нижний предел. Арифметика проста: GIF весит примерно столько, сколько площадь холста, умноженная на количество кадров, так что уменьшение ширины и высоты вдвое убирает примерно три четверти размера, а снижение частоты кадров с тридцати до двенадцати обычно незаметно на коротких роликах. Если сжатый GIF всё ещё тяжелее, чем хотелось бы, эти два параметра изменят размер гораздо сильнее любого оптимизатора.

Весь скрытый в файле текст уходит вместе с ним

GIF может содержать удивительно много невидимого текста, причём не в одном месте. Есть блоки комментариев, которые в анимации могут быть на каждом кадре. Есть пакет XMP, где Photoshop и другие инструменты Adobe хранят марку и модель камеры, автора, строки авторских прав и GPS-координаты. Есть plain-text расширения и цветовые профили. Всё это не видно при просмотре картинки.

Мы создали файл, в котором было всё: десять блоков комментариев, полный XMP-пакет с широтой, долготой, высотой и датой съёмки, марка и модель камеры, программа, которая его записала, строка с авторством и уведомление об авторских правах, цветовой профиль и plain-text расширение. Затем мы пропустили его через эту страницу и проверили результат с помощью инструмента для чтения метаданных. Всё это исчезло. Восемь кадров остались восемью, а анимация всё так же зациклена.

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

На этой странице принимаются и другие типы изображений

Загрузчик также принимает PNG, JPG, JPEG, WEBP, AVIF, SVG, TIFF, BMP и JFIF, и каждый файл возвращается в том же формате, в каком был загружен. PNG из таблицы выше был загружен как PNG и вернулся как PNG, всё так же 1400 на 900 в заголовке. Попадание на страницу GIF не превращает ваши изображения в другой формат.

Что вы получаете

  • Все кадры, все задержки между кадрами и настройка зацикливания сохраняются
  • Прозрачность сохраняется, с теми же цветовыми значениями, что были изначально
  • Исходный размер холста не меняется
  • Палитры каждого кадра объединяются в одну общую таблицу — именно здесь достигается основная экономия
  • Комментарии, XMP, GPS-координаты, данные о камере и авторе, а также цветовые профили удаляются за один проход
  • Данные изображения не трогаются, если повторений для удаления не осталось
  • Без регистрации, водяных знаков и электронной почты

Что дальше?

Для фотографий, а не анимаций, Удалить метаданные фотографии очищает EXIF и GPS без повторного перекодирования изображения.
Если ваш GIF — это одиночный кадр, а не анимация, Сжать PNG обычно подходит лучше.
А для того же содержимого в формате, разработанном намного позже 1987 года, Сжать WebP работает и со статикой, и с анимацией.

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

Потому что в нём почти не осталось повторяющихся данных. У GIF нет настройки качества, поэтому сжиматель не может обменять резкость на размер, как это делает инструмент для JPEG. Он может только объединить цветовые таблицы каждого кадра в одну и перестать сохранять части холста, которые не менялись. В нашем тесте запись экрана уменьшилась на 40,1 процента — с 41 699 до 24 994 байт — потому что там было много повторений. Одиночный кадр на компактной палитре не уменьшился вовсе и вернулся ровно с тем же размером — 56 676 байт. Оба файла были обработаны одним и тем же инструментом в один и тот же день.

Да, и мы проверили это на уровне байтов, а не просто просмотром. Сжатый файл с тридцатью кадрами по-прежнему содержит тридцать кадров, тридцать блоков времени с исходной задержкой 80 миллисекунд и расширение цикла, которое сообщает браузеру повторять анимацию. Размер холста остался 640 на 400. Ничто не преобразуется в статичное изображение, и ни один кадр не удаляется ради красивой цифры.

Нет, по нашим измерениям. Экономия достигается за счёт удаления повторений, а не приближения изображения. После уменьшения на 40 процентов мы нарисовали результат на холсте и считали пиксели: синий в заголовке, серый страницы, серый строки и красная рамка были идентичны оригиналу. В прозрачном GIF угол остался полностью прозрачным, красный — всё так же 220, 40, 60, а белый — абсолютно чисто-белым.

Да, полностью, одновременно со сжатием. GIF скрывает данные в нескольких местах: блоки комментариев, которые могут повторяться на каждом кадре, XMP-пакет с маркой и моделью камеры, автором, строками авторских прав и GPS-координатами, а также plain-text расширения и цветовые профили. Мы создали файл с этим всем, пропустили через страницу и проверили результат с помощью инструмента для чтения метаданных. Десять блоков комментариев исчезли. Широта, долгота, высота, дата съёмки, модель камеры, автор, кредит и авторские права оказались пустыми, а XMP-пакет исчез полностью. Восемь кадров остались восемью, а анимация по-прежнему зациклена.

Измените две вещи, которые сжиматель не может менять: размер холста и количество кадров. GIF весит примерно столько, сколько площадь холста, умноженная на количество кадров, так что уменьшение ширины и высоты вдвое убирает примерно три четверти размера, а снижение частоты кадров с тридцати до двенадцати обычно незаметно на коротких роликах. Обрезать секунду с конца поможет больше, чем любой оптимизатор. Если GIF — это просто статичное изображение, ему вообще не обязательно быть GIF.

Да. Загрузчик принимает PNG, JPG, JPEG, WEBP, AVIF, SVG, TIFF, BMP и JFIF наряду с GIF, и каждый файл возвращается в том же формате, в каком был загружен. PNG, который мы загрузили, уменьшился с 703 830 до 74 379 байт и вернулся как PNG, всё так же 1400 на 900 в заголовке. Ничто не конвертируется в другой формат из-за того, на какую страницу вы попали.