Files
SnapOtter/apps/docs/ru/tools/image/gif-tools.md
T
SnapOtterandGitHub 4963ab3bbd feat(docs-i18n): translate all documentation into 20 languages
All 181 docs markdown files translated into 20 languages (apps/docs/<locale>/**). Companion to the i18n code PR; admin-merged because the file count exceeds GitHub's per-PR CI trigger limit. Validated by pnpm i18n:check (all surfaces, 0 stale/missing) and a clean all-locale docs build.
2026-07-11 13:52:47 +08:00

7.8 KiB
Raw Blame History

description, i18n_source_hash, i18n_provenance, i18n_output_hash
description i18n_source_hash i18n_provenance i18n_output_hash
Изменение размера, оптимизация, изменение скорости, реверс, поворот и извлечение кадров анимированных GIF в одном инструменте. 5e525e80db92 human b17a88f42542

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

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

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

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

Параметры

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

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

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

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

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

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

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

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

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

Параметр Тип Обязательный По умолчанию Описание
extractMode string Нет "single" Режим извлечения: single, range, all
frameNumber number Нет 0 Индекс кадра для извлечения в режиме single (отсчёт с 0)
frameStart number Нет 0 Индекс начального кадра для режима range (отсчёт с 0)
frameEnd number Нет - Индекс конечного кадра для режима range (отсчёт с 0, включительно)
extractFormat string Нет "png" Формат извлекаемых кадров: png, webp

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

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

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

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

curl -X POST http://localhost:1349/api/v1/tools/image/gif-tools \
  -F "file=@animation.gif" \
  -F 'settings={"mode":"resize","percentage":50}'

Оптимизация

curl -X POST http://localhost:1349/api/v1/tools/image/gif-tools \
  -F "file=@large.gif" \
  -F 'settings={"mode":"optimize","colors":128,"effort":9}'

Ускорение

curl -X POST http://localhost:1349/api/v1/tools/image/gif-tools \
  -F "file=@animation.gif" \
  -F 'settings={"mode":"speed","speedFactor":2.0}'

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

curl -X POST http://localhost:1349/api/v1/tools/image/gif-tools \
  -F "file=@animation.gif" \
  -F 'settings={"mode":"extract","extractMode":"single","frameNumber":5,"extractFormat":"png"}'

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

{
  "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

curl -X POST http://localhost:1349/api/v1/tools/image/gif-tools/info \
  -F "file=@animation.gif"

Ответ Info

{
  "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 представляет собой общую длительность анимации в миллисекундах.