Gifsicle
Eddie Kohler (автор программы) · лицензия GPL-2.0
Сжимает анимированные GIF для сайта, писем и инструкций: убирает повторы между кадрами, сокращает палитру, меняет размер и скорость, и всё это агент делает одной командой.
✓ Проверено 19.10.2026: Ubuntu 24.04 в одноразовом контейнере Docker на сервере, от root: Gifsicle 1.98, собранный из архива автора с www.lcdf.org после apt-get install build-essential; тестовую анимацию собирал convert из ImageMagick, который уже был в контейнере. Что именно проверяли
Какую задачу решает
Консольная программа для анимированных GIF. При сжатии она хранит в каждом кадре только то, что поменялось, сокращает палитру, меняет размер, скорость и обрезает кадры. Агент так готовит лёгкую анимацию для сайта, письма или инструкции и вынимает из неё отдельный кадр.
- Ключ -O3 перебирает несколько способов сжатия. В прогоне анимация из 24 кадров уменьшилась с 304 420 до 22 113 байт, gifdiff и покадровая сверка в ImageMagick расхождений не нашли.
- Ключи --lossy, --colors и --resize-width уменьшают файл ещё сильнее ценой искажений. Та же анимация с --lossy=80, палитрой 64 цвета и шириной 320 точек заняла 12 133 байт.
- Ключ -d меняет задержку между кадрами в сотых долях секунды, --crop обрезает кадры, запись '#0' вынимает первый кадр отдельным файлом.
- Ключ -b переписывает сразу несколько файлов на месте. Вторая программа из набора, gifdiff, сравнивает две анимации по виду. В прогоне на совпавших файлах она вернула код 0, на разных код 1.
Пример результата
Говоришь агенту
Сожми анимацию anim.gif для сайта: ширина 320 точек, не больше 64 цветов, результат положи в out/anim-320.gif, исходник не трогай.
Что получится
Мы прогнали этот сценарий на тестовой анимации из 24 кадров 480x270, которую скрипт сам нарисовал. Команда gifsicle -O3 --lossy=80 --colors 64 --resize-width 320 anim.gif -o out/anim-320.gif завершилась с кодом 0. Файл уменьшился с 304 420 до 12 133 байт, в нём те же 24 кадра, логический экран 320x180 и общая палитра на 64 цвета. Сумма sha256 исходника не изменилась.
Паспорт
- Кто делает
- Eddie Kohler (автор программы)
- Исходный код
- github.com/kohler/gifsicle
- Инструкция
- lcdf.org/gifsicle/man.html
- Лицензия
- GPL-2.0
- Версия
- 1.98 на 19.10.2026
- Системы
- macOS · Linux
- Где работает
- На компьютере, на сервере и в контейнере
- Цена
- Бесплатно
- Проверка
- Проверено 19.10
Установить агентом
Установи программу «Gifsicle». Работай по шагам и после каждого коротко говори, что сделал.
Что это за программа (каталог smyslokod.ru, официальные источники сверены 19.10.2026):
- официальный сайт: https://www.lcdf.org/gifsicle/
- исходный код: https://github.com/kohler/gifsicle
- инструкция по установке: https://www.lcdf.org/gifsicle/man.html
- актуальная версия на 19.10.2026: 1.98
- лицензия: GPL-2.0
- для работы нужно (в отдельных случаях): Компилятор C и make (пакет build-essential в Ubuntu) - Нужны при сборке из архива автора. Пакет apt приходит собранным, у Homebrew готовые сборки есть для Mac на Apple Silicon.
Правила:
1. Ничего не устанавливай и не меняй, пока я не скажу «да» на твой план.
2. Ставь только способами из этого промпта. Сторонние сборки, скрипты с форумов и из чужих репозиториев не бери.
3. Мои проекты не трогай: не меняй их файлы, виртуальные окружения и списки зависимостей (package.json, requirements.txt, pyproject.toml).
4. Команды с sudo, правку профиля оболочки (~/.zshrc, ~/.bashrc) и переменной PATH делай только после моего отдельного «да» на каждую.
5. Не проси у меня пароли и ключи и не выводи их. Если нужен пароль администратора, дай команду, я выполню её сам.
6. Пиши результат в новый файл через -o.
7. Ключ -b ставь только после «да» человека. Он переписывает исходные файлы без копии.
8. После сжатия покажи человеку размер файла до и после и прочитай stderr. По NEWS.md 1.98 ошибки чтения GIF не меняют код выхода без ключа --no-ignore-errors. В нашем прогоне обрезанный файл дал код 0.
Шаги:
0. Определи, где ты работаешь: мой компьютер, сервер или контейнер. Какая система и процессор, какие менеджеры пакетов есть (Homebrew, apt, winget, uv, pipx). Ставить нужно туда, где ты сам запускаешь команды.
- на компьютере: подготовить анимацию к выкладке на сайт или в письмо.
- на сервере: сжимать GIF пачкой там, где лежат файлы сайта.
- в контейнере: мы проверяли в контейнере Ubuntu 24.04 от root.
1. Проверь, не стоит ли программа уже: gifsicle --version. Если стоит и запускается, ничего не ставь и переходи к шагу 5.
2. Обязательных зависимостей у программы нет, то, что нужно в отдельных случаях, перечислено выше. Проверь свободное место на диске: нужно После сборки из архива: gifsicle 804 920 байт и gifdiff 226 536 байт в /usr/local/bin плюс две страницы справки. Пакет Ubuntu 1.94 по данным dpkg занимает 359 КиБ. Сколько места заняли инструменты сборки, мы не мерили..
3. Составь план: каким одним способом из списка ниже будешь ставить, что появится на диске и сколько места займёт, что поменяется в системе и как потом удалить. Покажи план и жди моего «да».
Способы из официальных источников:
- macOS, Homebrew: brew install gifsicle (Сайт автора ссылается на Homebrew. Формула gifsicle, описание «GIF image/animation creator/editor», зависимостей нет. Команда ставит текущую версию формулы, на 19.10.2026 это 1.98, позже она может смениться. Версию 1.98 мы проверяли только сборкой из архива, brew install не запускали.)
- Linux, сборка из архива автора: curl -fsSLO https://www.lcdf.org/gifsicle/gifsicle-1.98.tar.gz && echo "e9d4cc0816db95c64d32e79f778836db0f1f7eb15868490bd330104e5146b66e gifsicle-1.98.tar.gz" | sha256sum -c - && tar xzf gifsicle-1.98.tar.gz && cd gifsicle-1.98 && ./configure && make && sudo make install (Архив 599 710 байт. Автор не публикует рядом сумму или подпись, сумма sha256 взята из формулы Homebrew, скачанный нами файл с ней совпал. По README программа ставится в /usr/local. Без библиотек X11 configure пропускает программу просмотра gifview. gifsicle и gifdiff собираются и без них. Мы ставили от root без sudo, из пакетов доставили только build-essential. Папку gifsicle-1.98 сохрани: команда удаления запускается из неё.)
- Linux, apt: sudo apt-get install -y gifsicle (Команда ставит текущую версию пакета из репозитория дистрибутива. В нашем прогоне на Ubuntu 24.04 это была 1.94, она старше версии из карточки. В прогоне пакет поставил gifsicle, gifdiff и gifview в /usr/bin, по dpkg он зависит от libc6 и libx11-6.)
4. Установи по согласованному плану. Если что-то идёт не так, как в плане, остановись и спроси.
5. Проверь результат:
- gifsicle --version: программа запускается без ошибки;
- Во временной папке нарисуй тестовую анимацию из 24 кадров и собери её в GIF командой convert из ImageMagick (в нашем контейнере она уже стояла). Сожми её с -O3 и проверь gifdiff, что картинка не изменилась. Потом получи уменьшенную копию с --lossy, --colors и --resize-width, вынь первый кадр, ускорь анимацию, обрежь кадры, перепиши две копии ключом -b. Сверь размеры, число кадров, задержку и сумму исходника, посмотри коды выхода на обрезанном и отсутствующем файле. Делай это во временной папке и не трогай мои файлы.
mkdir -p /tmp/gif-test/frames /tmp/gif-test/out && cd /tmp/gif-test
python3 -c "W,H=480,270;bg=lambda x,y:((x//30)*15,(y//30)*25,128);[open('frames/f%02d.ppm'%i,'wb').write(b'P6 %d %d 255 '%(W,H)+bytes(v for y in range(H) for x in range(W) for v in ((250,250,250) if (20+i*17<=x<60+i*17 and 100<=y<140) else (40,160,60) if (y>=250 and x<i*20) else bg(x,y)))) for i in range(24)]"
convert -delay 8 -loop 0 +dither frames/f*.ppm anim.gif
sha256sum anim.gif > anim.sha256 && gifsicle --info anim.gif | head -4
gifsicle -O3 anim.gif -o out/anim-o3.gif && gifdiff anim.gif out/anim-o3.gif && echo same
gifsicle -O3 --lossy=80 --colors 64 --resize-width 320 anim.gif -o out/anim-320.gif
ls -l anim.gif out/anim-o3.gif out/anim-320.gif && gifsicle --info out/anim-320.gif | head -4
gifsicle anim.gif '#0' -o out/first.gif
gifsicle -d 4 anim.gif -o out/fast.gif && gifsicle --info out/fast.gif | grep -m1 delay
gifsicle --crop 0,0+240x135 anim.gif -o out/crop.gif && gifsicle --info out/crop.gif | head -2
mkdir -p batch && cp anim.gif batch/a.gif && cp anim.gif batch/b.gif && gifsicle -b -O3 batch/a.gif batch/b.gif && ls -l batch
sha256sum -c anim.sha256
head -c 20000 anim.gif > broken.gif; gifsicle -O3 broken.gif -o out/broken-o3.gif; echo code=$?
gifsicle --no-ignore-errors -O3 broken.gif -o out/broken2.gif; echo code=$?
gifsicle nope.gif -o out/nope.gif; echo code=$?
- если ты работаешь в папке моего проекта, покажи git status: от установки в проекте не должно появиться изменений.
6. Итог одним сообщением: что установлено, какой версии и куда, сколько места заняло, что поменялось в системе и как всё удалить (macOS, Homebrew: brew uninstall gifsicle; Linux, сборка из архива автора: cd gifsicle-1.98 && sudo make uninstall; Linux, apt: sudo apt-get purge -y gifsicle).
Если на любом шаге ошибка, не чини наугад: покажи текст ошибки и скажи, что, по-твоему, случилось. Частые проблемы: https://smyslokod.ru/cli/gifsicle#problemyПромпт собран из официальных инструкций, сверенных 19.10.2026. Агент сначала проверит, что уже стоит, покажет план с местом на диске и способом удаления и без твоего «да» ничего не поставит.
Как ставят вручную
Способы из официальных источников, у каждого ссылка на первоисточник.
macOS · Homebrew · источник
brew install gifsicle
Сайт автора ссылается на Homebrew. Формула gifsicle, описание «GIF image/animation creator/editor», зависимостей нет. Команда ставит текущую версию формулы, на 19.10.2026 это 1.98, позже она может смениться. Версию 1.98 мы проверяли только сборкой из архива, brew install не запускали.
Linux · сборка из архива автора · источник
curl -fsSLO https://www.lcdf.org/gifsicle/gifsicle-1.98.tar.gz && echo "e9d4cc0816db95c64d32e79f778836db0f1f7eb15868490bd330104e5146b66e gifsicle-1.98.tar.gz" | sha256sum -c - && tar xzf gifsicle-1.98.tar.gz && cd gifsicle-1.98 && ./configure && make && sudo make install
Архив 599 710 байт. Автор не публикует рядом сумму или подпись, сумма sha256 взята из формулы Homebrew, скачанный нами файл с ней совпал. По README программа ставится в /usr/local. Без библиотек X11 configure пропускает программу просмотра gifview. gifsicle и gifdiff собираются и без них. Мы ставили от root без sudo, из пакетов доставили только build-essential. Папку gifsicle-1.98 сохрани: команда удаления запускается из неё.
Linux · apt · источник
sudo apt-get install -y gifsicle
Команда ставит текущую версию пакета из репозитория дистрибутива. В нашем прогоне на Ubuntu 24.04 это была 1.94, она старше версии из карточки. В прогоне пакет поставил gifsicle, gifdiff и gifview в /usr/bin, по dpkg он зависит от libc6 и libx11-6.
Как удалить
- macOS, Homebrew:
brew uninstall gifsicle - Linux, сборка из архива автора:
cd gifsicle-1.98 && sudo make uninstall - Linux, apt:
sudo apt-get purge -y gifsicle
Что нужно для работы
- Компилятор C и make (пакет build-essential в Ubuntu) (в отдельных случаях) - Нужны при сборке из архива автора. Пакет apt приходит собранным, у Homebrew готовые сборки есть для Mac на Apple Silicon.
Системы
- macOS - через Homebrew, у формулы есть готовые сборки для Mac на Apple Silicon. На Mac мы не проверяли.
- Linux - сборка из архива автора или пакет дистрибутива. Мы проверяли Ubuntu 24.04 на x86_64.
Где запускать
Ставить нужно туда, где работает агент: на твой компьютер, сервер или в контейнер.
- На компьютере - подготовить анимацию к выкладке на сайт или в письмо.
- На сервере - сжимать GIF пачкой там, где лежат файлы сайта.
- В контейнере - мы проверяли в контейнере Ubuntu 24.04 от root.
Сколько ресурсов нужно
- Место на диске
- После сборки из архива: gifsicle 804 920 байт и gifdiff 226 536 байт в /usr/local/bin плюс две страницы справки. Пакет Ubuntu 1.94 по данным dpkg занимает 359 КиБ. Сколько места заняли инструменты сборки, мы не мерили.
- Память
- Отдельно не мерили. С версии 1.98 программа по умолчанию отказывается создавать логический экран больше 16384x16384 точек, так автор бережёт память (NEWS.md). Ключ --max-screen меняет этот предел.
- Сеть
- Самой программе сеть не нужна: во время задачи запись соединений пустая. При установке были соединения с www.lcdf.org (3.233.166.34, порт 443), архивами Ubuntu (91.189.91.81-83, 91.189.92.22-24, 185.125.190.81-83, порт 80) и deb.nodesource.com (104.20.45.190, 172.66.150.169, порт 443). Последний нужен для Node.js в образе нашей песочницы, к Gifsicle он не относится. DNS контейнера отвечал на 127.0.0.11. Доступ из России мы не проверяли.
Пакет build-essential ставился 30 с, скачивание и сборка Gifsicle заняли 6 с. Сжатие с -O3 тестовой анимации 480x270 из 24 кадров заняло 27 мс.
Лицензия и платные замены
Лицензия GPL-2.0. Свободная лицензия GNU GPL версии 2: пользоваться можно бесплатно, в том числе в работе. Условия касаются тех, кто распространяет программу или её изменённую версию. Гарантий автор не даёт. Текст лицензии
Цена: Бесплатно. Бесплатно, GPL-2.0.
Платные замены
Платную замену мы не указываем: тарифы платных сервисов сжатия GIF мы не сверяли.
Бесплатные замены
- ImageMagick - Консольная программа для картинок многих форматов, есть в каталоге. В нашем прогоне ею собирали тестовую анимацию из кадров и сверяли кадры после сжатия.
О чём помнить
- Безопасность. Агент запускает gifsicle в терминале сам (exec). Программа читает файлы GIF, которые ей назвали (read), и пишет результат по пути из -o с правами пользователя (write). Ключ -b переписывает сами исходные файлы на месте без вопроса и без копии (acts): в прогоне так переписались две тестовые копии. Входа в учётные записи и ключей программа не просит.
- По справке -O не обещает уменьшить файл, в редких случаях даже -O3 его увеличивает. Сравнивай размер до и после.
- Ключ --lossy меняет цвета точек, искажения растут вместе с числом, по умолчанию оно 20. С версии 1.96 --lossy считает искажения иначе, и то же число может сжимать слабее, чем в старых версиях (NEWS.md).
- В прогоне обрезанный файл программу не остановил. Она написала «read error: GIF truncated», записала результат и вышла с кодом 0. С ключом --no-ignore-errors тот же файл дал код 1.
- Готовых файлов для Windows автор не выпускает. Сайт ссылается на сборки стороннего человека и сам предупреждает, что не проверял их, поэтому способа для Windows в карточке нет.
Частые проблемы
gifsicle:file.gif: read error: GIF truncated, код 0
Файл обрезан, например не докачался. В прогоне программа записала результат из той части, которую успела прочитать. Скачай файл заново. Чтобы такой файл давал ошибку, добавь --no-ignore-errors.
configure: WARNING: Not compiling gifview since X is not available.
В системе нет библиотек X11 для программы просмотра gifview. Сборка продолжится: gifsicle и gifdiff от X11 не зависят. Чтобы убрать предупреждение, запусти ./configure --disable-gifview.
gifsicle:nope.gif: No such file or directory, код 1
Файла по этому пути нет. Проверь путь и имя файла.
Проверка
✓ Проверено 19.10.2026: Ubuntu 24.04 в одноразовом контейнере Docker на сервере, от root: Gifsicle 1.98, собранный из архива автора с www.lcdf.org после apt-get install build-essential; тестовую анимацию собирал convert из ImageMagick, который уже был в контейнере.
- Когда
- 19.10.2026
- Среда
- Ubuntu 24.04 в одноразовом контейнере Docker на сервере, от root: Gifsicle 1.98, собранный из архива автора с www.lcdf.org после apt-get install build-essential; тестовую анимацию собирал convert из ImageMagick, который уже был в контейнере
- Объём
- Установили и прогнали задачу на тестовых данных
- Что именно сделали
- Одноразовый контейнер Ubuntu 24.04 без данных и ключей, gifsicle в нём не было. Поставили build-essential через apt. Скачали gifsicle-1.98.tar.gz с www.lcdf.org (599 710 байт), sha256sum -c сверила сумму из формулы Homebrew. ./configure, make и make install поставили gifsicle и gifdiff в /usr/local/bin, gifview без X11 не собрался. gifsicle --version вывела LCDF Gifsicle 1.98.
- Скрипт сам нарисовал 24 кадра 480x270 с движущимся квадратом и полосой и собрал их командой convert -delay 8 -loop 0 +dither frames/f*.ppm anim.gif в файл 304 420 байт. Сумму sha256 исходника записали.
- gifsicle -O3 anim.gif -o out/anim-o3.gif дала 22 113 байт. gifdiff anim.gif out/anim-o3.gif вернула код 0, все 24 кадра после -coalesce в ImageMagick совпали с исходными побайтно.
- Сценарий примера: gifsicle -O3 --lossy=80 --colors 64 --resize-width 320 anim.gif -o out/anim-320.gif дала 12 133 байт, код 0. gifsicle --info показала 24 кадра, экран 320x180 и палитру на 64 цвета, gifdiff с исходником вернула код 1: картинка изменилась, как и ожидали.
- Запись '#0' вынула первый кадр, он совпал с кадром 0 исходника. -d 4 поставила всем 24 кадрам задержку 0.04 с, --crop 0,0+240x135 обрезала кадры до 240x135. gifsicle -b -O3 batch/a.gif batch/b.gif переписала обе копии на месте без вопроса, по 22 113 байт.
- Сумма исходника anim.gif не изменилась. Обрезанный до 20 000 байт файл без ключей дал «read error: GIF truncated» и код 0, с --no-ignore-errors код 1. Отсутствующий файл дал код 1. Все 15 команд taskCommands выполнили по очереди из папки /tmp/gif-test, каждая завершилась с кодом 0, соединений во время задачи не было.
- Удалили командой make uninstall из папки исходников: gifsicle, gifdiff и их справка ушли, после hash -r файлов в /usr/local/bin нет. Отдельно apt-get install gifsicle поставил 1.94, purge его убрал. Все проверки скрипт делал сам и только после них печатал TASK_OK.
| Дата | Версия | Объём | Где | Итог |
|---|---|---|---|---|
| 19.10.2026 | 1.98 | задача | контейнер, Linux | получилось |
«Проверено» ставим, только когда сами поставили программу и прогнали её на задаче. Сверка ссылок и вывод версии так не называются.
Похожие программы
- ImageMagickСжимает картинки и переводит их в WebP, меняет размер, делает обложки с надписью и водяные знаки. Агенту нужна, чтобы обработать всю папку картинок сайта за один раз.
- FFmpegРежет, склеивает и перекодирует видео и звук. Агенту нужна почти в любой работе с роликами: вытащить звук из записи, уменьшить файл, вырезать отрывок.
- oxipngСжимает PNG без потери качества перед выкладкой на сайт. Агент ужмёт снимки экрана, значки и баннеры, уберёт служебные метаданные и сложит результат в отдельную папку.
Программу делают её авторы. Мы сверяем официальные источники и описываем, что ей нужно, но код остаётся чужим. Перед установкой посмотри план агента: что он поставит и что поменяет в системе.