This page was machine-translated. Spotted a mistake?Help improve it.
Skip to content

Инструменты GIF

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

Конечная точка API

POST /api/v1/tools/image/gif-tools

Параметры

Общие параметры

ПараметрТипОбязательныйПо умолчаниюОписание
modestringНет"resize"Режим работы: resize, optimize, speed, reverse, extract, rotate
loopnumberНет0Число повторов выходного GIF (0 = бесконечно, 1-100 = конечное число повторов)

Параметры режима изменения размера

ПараметрТипОбязательныйПо умолчаниюОписание
widthintegerНет-Целевая ширина в пикселях (от 1 до 16384)
heightintegerНет-Целевая высота в пикселях (от 1 до 16384)
percentagenumberНет-Масштабирование в процентах (от 1 до 500). Переопределяет width/height, если задан.

Параметры режима оптимизации

ПараметрТипОбязательныйПо умолчаниюОписание
colorsnumberНет256Максимальное число цветов в палитре (от 2 до 256)
dithernumberНет1.0Сила дизеринга (от 0 до 1, где 0 отключает дизеринг)
effortnumberНет7Уровень усилий оптимизации (от 1 до 10, выше = медленнее, но меньше)

Параметры режима скорости

ПараметрТипОбязательныйПо умолчаниюОписание
speedFactornumberНет1.0Множитель скорости (от 0.1 до 10). Значения > 1 ускоряют, < 1 замедляют.

Параметры режима извлечения

ПараметрТипОбязательныйПо умолчаниюОписание
extractModestringНет"single"Режим извлечения: single, range, all
frameNumbernumberНет0Индекс кадра для извлечения в режиме single (отсчёт с 0)
frameStartnumberНет0Индекс начального кадра для режима range (отсчёт с 0)
frameEndnumberНет-Индекс конечного кадра для режима range (отсчёт с 0, включительно)
extractFormatstringНет"png"Формат извлекаемых кадров: png, webp

Параметры режима поворота

ПараметрТипОбязательныйПо умолчаниюОписание
anglenumberНет-Угол поворота: 90, 180 или 270 градусов
flipHbooleanНетfalseОтразить по горизонтали
flipVbooleanНетfalseОтразить по вертикали

Примеры запросов

Изменение размера

bash
curl -X POST http://localhost:1349/api/v1/tools/image/gif-tools \
  -F "[email protected]" \
  -F 'settings={"mode":"resize","percentage":50}'

Оптимизация

bash
curl -X POST http://localhost:1349/api/v1/tools/image/gif-tools \
  -F "[email protected]" \
  -F 'settings={"mode":"optimize","colors":128,"effort":9}'

Ускорение

bash
curl -X POST http://localhost:1349/api/v1/tools/image/gif-tools \
  -F "[email protected]" \
  -F 'settings={"mode":"speed","speedFactor":2.0}'

Извлечение одного кадра

bash
curl -X POST http://localhost:1349/api/v1/tools/image/gif-tools \
  -F "[email protected]" \
  -F 'settings={"mode":"extract","extractMode":"single","frameNumber":5,"extractFormat":"png"}'

Пример ответа

json
{
  "jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/animation.gif",
  "originalSize": 2345678,
  "processedSize": 1234567
}

Подмаршрут Info

POST /api/v1/tools/image/gif-tools/info

Возвращает метаданные об анимированном GIF без его обработки.

Запрос Info

bash
curl -X POST http://localhost:1349/api/v1/tools/image/gif-tools/info \
  -F "[email protected]"

Ответ Info

json
{
  "width": 480,
  "height": 320,
  "pages": 24,
  "delay": [100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100],
  "loop": 0,
  "fileSize": 2345678,
  "duration": 2400
}

Примечания

  • Основная конечная точка обработки использует стандартную фабрику createToolRoute.
  • Конечной точке info требуется только загрузка файла (настройки не нужны).
  • В режиме resize, если задан percentage, он имеет приоритет над width/height. Изменение размера использует fit: inside для сохранения соотношения сторон.
  • В режиме speed задержки кадров делятся на коэффициент скорости. Минимальная задержка на кадр составляет 20 мс (ограничение спецификации GIF).
  • В режиме reverse также доступен параметр speedFactor для одновременной регулировки скорости при реверсе.
  • В режиме extract с range или all вывод представляет собой ZIP-файл с отдельными кадрами.
  • В режиме rotate каждый кадр обрабатывается отдельно и вновь собирается в анимацию.
  • Параметр loop управляет тем, сколько раз повторяется выходной GIF. Используйте 0 для бесконечного повтора.
  • Поле duration в ответе info представляет собой общую длительность анимации в миллисекундах.