Search K
Умная обрезка
Умная обрезка с учётом объекта, лиц или подрезки. Использует стратегии attention/entropy от Sharp и ИИ-обнаружение лиц для интеллектуального кадрирования.
Конечная точка API
POST /api/v1/tools/image/smart-crop
Обработка: асинхронная (возвращает 202, опрашивайте /api/v1/jobs/{jobId}/progress для получения статуса через SSE)
Пакет модели: face-detection (200-300 МБ) - требуется только для режима face
Параметры
| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
| file | file | Да | - | Файл изображения (multipart) |
| mode | string | Нет | "subject" | Режим обрезки: subject, face, trim. (Устаревшие значения attention и content сопоставляются с subject и trim) |
| strategy | string | Нет | "attention" | Стратегия для режима объекта: attention или entropy |
| width | integer | Нет | - | Целевая ширина в пикселях |
| height | integer | Нет | - | Целевая высота в пикселях |
| padding | integer | Нет | 0 | Процент отступа вокруг объекта (0-50) |
| facePreset | string | Нет | "head-shoulders" | Предустановка кадрирования лица: closeup, head-shoulders, upper-body, half-body |
| sensitivity | number | Нет | 0.5 | Чувствительность обнаружения лиц (0-1) |
| threshold | integer | Нет | 30 | Порог режима подрезки для обнаружения фона (0-255) |
| padToSquare | boolean | Нет | false | Дополнить обрезанный результат до квадрата |
| padColor | string | Нет | "#ffffff" | Цвет фона для отступов |
| targetSize | integer | Нет | - | Целевой размер для дополненного вывода (в пикселях) |
| quality | integer | Нет | - | Качество вывода (1-100) |
Пример запроса
bash
curl -X POST http://localhost:1349/api/v1/tools/image/smart-crop \
-F "[email protected]" \
-F 'settings={"mode":"face","width":1080,"height":1080,"facePreset":"head-shoulders"}'Ответ
Первоначальный ответ (202 Accepted)
json
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"async": true
}Прогресс (SSE по адресу /api/v1/jobs/{jobId}/progress)
event: progress
data: {"phase":"processing","percent":50}Итоговый результат (через SSE)
json
{
"phase": "complete",
"percent": 100,
"result": {
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"downloadUrl": "/api/v1/download/{jobId}/portrait_smartcrop.jpg",
"originalSize": 500000,
"processedSize": 320000
}
}Режимы
Режим объекта
Использует стратегию attention или entropy от Sharp для поиска наиболее визуально интересной области и обрезает вокруг неё.
Режим лица
Обнаруживает лица с помощью ИИ, затем кадрирует обрезку вокруг обнаруженных лиц с использованием заданного facePreset. Переходит к режиму объекта (стратегия attention), если лица не обнаружены.
Режим подрезки
Удаляет однородные границы/фон с изображения. При желании дополняет результат до квадрата с заданным цветом фона и целевым размером.
Примечания
- Этот инструмент использует фабрику
createToolRouteсexecutionHint: "long", поэтому возвращает 202 с прогрессом через SSE. - Режим лица требует пакет модели
face-detection(200-300 МБ). - Режимы объекта и подрезки работают без какого-либо пакета ИИ-модели.
facePresetопределяет, насколько плотно обрезка кадрирует обнаруженные лица:closeupсамый плотный,half-bodyсамый широкий.- Если ширина/высота не заданы, по умолчанию используется 1080x1080.
