Документация

Всё, что нужно знать для работы с LW Images — от быстрого старта до тонкой настройки.

Быстрый старт

Сжатие первого файла за 2 минуты

🖼

Форматы

PNG, JPEG, WebP, AVIF, JPEG XL — что выбрать

AI-апскейлинг

Увеличение через Real-ESRGAN

🔌

REST API

Справочник эндпоинтов

Быстрый старт

Через веб-интерфейс

  1. Откройте little-white.ru/compress
  2. Перетащите изображения в зону загрузки (или нажмите «выберите файлы»)
  3. Выберите формат и качество при необходимости
  4. Скачайте результат — один файл или ZIP-архив
Без регистрации: до 50 файлов в день, макс. 2 МБ на файл. Для больших объёмов подключите тариф Pro.

Через API (Pro)

  1. Зарегистрируйтесь на little-white.ru и подключите тариф Pro
  2. Получите API-ключ в личном кабинете
  3. Отправьте запрос:
# Node.js const form = new FormData(); form.append('file', fs.createReadStream('photo.jpg')); form.append('format', 'avif'); const res = await fetch('https://little-white.ru/compress/v1/compress', { method: 'POST', headers: { Authorization: 'Bearer sk-lw-ваш-ключ' }, body: form }); const buffer = await res.arrayBuffer(); fs.writeFileSync('result.avif', Buffer.from(buffer));
# Python import requests res = requests.post( 'https://little-white.ru/compress/v1/compress', headers={'Authorization': 'Bearer sk-lw-ваш-ключ'}, files={'file': open('photo.jpg', 'rb')}, data={'format': 'avif'} ) with open('result.avif', 'wb') as f: f.write(res.content)

Поддерживаемые форматы

На вход принимаются JPEG, PNG и WebP. На выходе — любой из пяти форматов:

PNG

Lossy-сжатие через pngquant. Сохраняет прозрачность. Лучший выбор для иконок и UI-элементов.

~60–80% экономии

JPEG

Сжатие через mozjpeg. Trellis quantization — визуально лучше стандартного JPEG при меньшем размере.

~40–60% экономии

WebP

Универсальный формат. Поддержан всеми современными браузерами. Хороший баланс размера и качества.

~50–70% экономии

AVIF

Формат нового поколения. Лучшее соотношение качество/размер. Chrome, Firefox, Safari 16+.

~60–80% экономии

JPEG XL

Замена JPEG от JPEG Committee. Поддерживает прозрачность, HDR, lossless. Chrome 91+, Safari 17+.

~50–70% экономии

Какой формат выбрать?

Задача Рекомендация Почему
Фото на сайте AVIF + JPEG fallback Лучшее сжатие, поддержка >95% браузеров через <picture>
E-commerce каталог WebP 100% поддержка, быстрое кодирование, хорошее качество
Иконки и UI PNG Прозрачность, чёткие линии
Максимальная экономия AVIF Минимальный размер при сохранении визуального качества
Архивное хранение JPEG XL (lossless) Lossless + HDR + прозрачность в одном формате
Режим «Оригинал» сжимает файл в исходном формате без конвертации. Подходит, когда важно сохранить совместимость.

AI-апскейлинг

Увеличение разрешения изображения в 2× или 4× с помощью нейросети Real-ESRGAN. Обработка идёт на GPU-кластере (5 видеокарт NVIDIA).

Как работает

  1. Изображение загружается на сервер
  2. Ставится в очередь GPU-кластера (приоритет: high → normal → batch)
  3. Нейросеть восстанавливает детали и увеличивает разрешение
  4. Результат доступен для скачивания (~10–60 сек в зависимости от размера)

Ограничения

Совмещение со сжатием

В веб-интерфейсе можно включить «Сжимать» после апскейла — результат будет увеличен и затем сжат в выбранный формат. Через API это два последовательных запроса: /v1/upscale/v1/compress.

Webhook-уведомления

При отправке параметра webhook в запросе на сжатие, сервер отправит POST-запрос на указанный URL по завершению обработки.

Формат уведомления

POST https://your-server.com/webhook Content-Type: application/json X-LW-Signature: sha256=abc123... X-LW-Timestamp: 1719000000 { "event": "compress.done", "original_name": "photo.jpg", "original_size": 4398046, "result_size": 921654, "format": "avif", "savings_pct": 79.0, "download_url": "https://little-white.ru/compress/dl/..." }

Проверка подписи

const crypto = require('crypto'); function verifyWebhook(body, signature, apiKey) { const expected = 'sha256=' + crypto .createHmac('sha256', apiKey) .update(body) .digest('hex'); return crypto.timingSafeEqual( Buffer.from(signature), Buffer.from(expected) ); }
Безопасность: Всегда проверяйте подпись и timestamp (разница <5 минут). Это защищает от replay-атак и подделки уведомлений.

IP-whitelist

Ограничьте использование API-ключа списком доверенных IP-адресов. Настраивается в личном кабинете или через API:

curl -X PUT https://little-white.ru/compress/v1/ips \ -H "Authorization: Bearer sk-lw-ваш-ключ" \ -H "Content-Type: application/json" \ -d '{"ips": ["203.0.113.10", "198.51.100.0/24"]}'

Поддерживаются отдельные IP и CIDR-подсети. Пустой массив — доступ с любого IP (whitelist отключён).

Лимиты и квоты

Параметр Free Pro
Сжатий в день 50 5 000
AI-апскейлов в день 20 100
Макс. размер файла 2 МБ 10 МБ
Макс. разрешение 50 мегапикселей (например, 7 000 × 7 000 px)
Rate limit (сжатие) 60 запросов / минута (per IP)
Rate limit (апскейл) 10 запросов / минута (per IP)
Batch-запросы до 20 файлов
Хранение результата 1 час после обработки

При превышении лимита API возвращает 429 Too Many Requests. Текущее использование доступно через GET /v1/limits.

Изображения с разрешением более 50 мегапикселей (произведение ширины на высоту в пикселях) отклоняются с ответом 400 и сообщением «Изображение слишком большое: максимум 50 мегапикселей. Уменьшите разрешение и попробуйте снова.» — это защита от чрезмерного потребления памяти. Ограничение по разрешению не зависит от размера файла: даже лёгкий по весу файл может превышать лимит по числу пикселей.

Безопасность