Files
SnapOtter/apps/docs/uk/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.7 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 43dbcd5be0be

GIF Tools

Змінюйте розмір, оптимізуйте, змінюйте швидкість, реверсуйте, витягуйте кадри та обертайте анімовані GIF. Надає кілька режимів роботи в одному інструменті.

API Endpoint

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 (з нуля)
frameStart number Ні 0 Індекс початкового кадру для режиму range (з нуля)
frameEnd number Ні - Індекс кінцевого кадру для режиму range (з нуля, включно)
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 затримки кадрів діляться на коефіцієнт швидкості. Мінімальна затримка на кадр — 20ms (обмеження специфікації GIF).
  • У режимі reverse також доступний параметр speedFactor для одночасного регулювання швидкості під час реверсування.
  • У режимі extract з range або all вивід — це ZIP-файл, що містить окремі кадри.
  • У режимі rotate кожен кадр обробляється окремо та знову складається в анімацію.
  • Параметр loop контролює, скільки разів повторюється вихідний GIF. Використовуйте 0 для нескінченного повторення.
  • Поле duration у відповіді info — це загальна тривалість анімації в мілісекундах.