mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
Renames 18 ambiguous or hard-to-search tool names so image tools self-qualify like the other modalities ("Compress" becomes "Compress Image"), and cleans up a few awkward names. Propagated across search (constants.ts), display (en.ts + 20 locales), the OpenAPI base spec + 20 locale specs, and the docs tool-page headings in 21 languages. Removes the duplicate "Normalize Audio" summary shared by the video and audio endpoints. Tool ids and routes are unchanged, so no API paths or bookmarks break.
6.4 KiB
6.4 KiB
description, i18n_source_hash, i18n_provenance, i18n_output_hash
| description | i18n_source_hash | i18n_provenance | i18n_output_hash |
|---|---|---|---|
| Объединение нескольких изображений в коллажи-сетки с более чем 25 шаблонами, регулируемыми зазорами и углами, а также панорамированием и масштабированием каждой ячейки. | cd50a782239d | human | ae86b19e1663 |
Коллаж и сетка
Объединяйте несколько изображений в красивые коллажи-сетки с более чем 25 шаблонами. Поддерживаются макеты от 2 до 9 изображений с настраиваемым зазором, радиусом скругления углов, цветом фона и панорамированием/масштабированием каждой ячейки.
Конечная точка API
POST /api/v1/tools/image/collage
Параметры
| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
| templateId | string | Да | - | ID макета шаблона (например 2-h-equal, 3-left-large, 4-grid, 9-grid) |
| cells | array | Нет | - | Массив настроек каждой ячейки с imageIndex, panX, panY, zoom, objectFit |
| cells[].imageIndex | integer | Да | - | Индекс изображения для размещения в этой ячейке (начиная с 0) |
| cells[].panX | number | Нет | 0 | Горизонтальное смещение панорамирования (от -100 до 100) |
| cells[].panY | number | Нет | 0 | Вертикальное смещение панорамирования (от -100 до 100) |
| cells[].zoom | number | Нет | 1 | Уровень масштабирования (от 1 до 10) |
| cells[].objectFit | string | Нет | "cover" |
Как изображение заполняет ячейку: cover или contain |
| gap | number | Нет | 8 | Зазор между ячейками в пикселях (от 0 до 500) |
| cornerRadius | number | Нет | 0 | Радиус скругления углов каждой ячейки в пикселях (от 0 до 500) |
| backgroundColor | string | Нет | "#FFFFFF" |
Цвет фона в виде hex или "transparent" |
| aspectRatio | string | Нет | "free" |
Соотношение сторон холста: free, 1:1, 4:3, 3:2, 16:9, 9:16, 4:5 |
| outputFormat | string | Нет | "png" |
Формат вывода: png, jpeg, webp, avif, jxl |
| quality | number | Нет | 90 | Качество вывода (от 1 до 100) |
Доступные шаблоны
| ID шаблона | Изображения | Макет |
|---|---|---|
2-h-equal |
2 | Два равных столбца |
2-v-equal |
2 | Две равные строки |
2-h-left-large |
2 | Слева 2/3, справа 1/3 |
2-h-right-large |
2 | Слева 1/3, справа 2/3 |
3-left-large |
3 | Большое слева, два в стопке справа |
3-right-large |
3 | Два в стопке слева, большое справа |
3-top-large |
3 | Большое сверху, два столбца снизу |
3-h-equal |
3 | Три равных столбца |
3-v-equal |
3 | Три равные строки |
4-grid |
4 | Сетка 2x2 |
4-left-large |
4 | Большое слева, три в стопке справа |
4-top-large |
4 | Большое сверху, три столбца снизу |
4-bottom-large |
4 | Три столбца сверху, большое снизу |
5-top2-bottom3 |
5 | Два сверху, три снизу |
5-top3-bottom2 |
5 | Три сверху, два снизу |
5-left-large |
5 | Большое слева, четыре в стопке справа |
5-center-large |
5 | Большое в центре, четыре по углам |
6-grid-2x3 |
6 | 2 столбца x 3 строки |
6-grid-3x2 |
6 | 3 столбца x 2 строки |
6-top-large |
6 | Большое сверху, пять столбцов снизу |
7-mosaic |
7 | Мозаичный макет |
8-mosaic |
8 | Мозаичный макет |
9-grid |
9 | Сетка 3x3 |
Пример запроса
curl -X POST http://localhost:1349/api/v1/tools/image/collage \
-F "file=@photo1.jpg" \
-F "file=@photo2.jpg" \
-F "file=@photo3.jpg" \
-F "file=@photo4.jpg" \
-F 'settings={"templateId":"4-grid","gap":12,"cornerRadius":8,"backgroundColor":"#F5F5F5","outputFormat":"png","quality":90}'
Пример ответа
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/collage.png",
"originalSize": 2456789,
"processedSize": 1823456
}
Примечания
- Загрузите несколько файлов изображений в multipart-запросе. Изображения назначаются ячейкам шаблона в порядке загрузки.
- Если загружено больше изображений, чем поддерживает шаблон, лишние изображения игнорируются.
- Поддерживаются входные форматы HEIC, RAW, PSD и SVG (декодируются автоматически).
- Базовый размер холста составляет 2400px по самой длинной стороне, масштабируемый в соответствии с выбранным соотношением сторон.
- Когда
aspectRatioимеет значение"free", холст по умолчанию использует 4:3 (2400x1800). - Значения
panX/panYкаждой ячейки сдвигают окно обрезки внутри ячейки. Значение 100 полностью смещает к одному краю, -100 к другому. - Цвет фона
"transparent"сохраняется только при выходных форматахpng,webpилиavif.