mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
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.
93 lines
6.4 KiB
Markdown
93 lines
6.4 KiB
Markdown
---
|
|
description: "Объединение нескольких изображений в коллажи-сетки с более чем 25 шаблонами, регулируемыми зазорами и углами, а также панорамированием и масштабированием каждой ячейки."
|
|
i18n_source_hash: 96f2055717df
|
|
i18n_provenance: human
|
|
i18n_output_hash: ae86b19e1663
|
|
---
|
|
|
|
# Коллаж / Сетка {#collage-grid}
|
|
|
|
Объединяйте несколько изображений в красивые коллажи-сетки с более чем 25 шаблонами. Поддерживаются макеты от 2 до 9 изображений с настраиваемым зазором, радиусом скругления углов, цветом фона и панорамированием/масштабированием каждой ячейки.
|
|
|
|
## Конечная точка API {#api-endpoint}
|
|
|
|
`POST /api/v1/tools/image/collage`
|
|
|
|
## Параметры {#parameters}
|
|
|
|
| Параметр | Тип | Обязательный | По умолчанию | Описание |
|
|
|-----------|------|----------|---------|-------------|
|
|
| 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) |
|
|
|
|
## Доступные шаблоны {#available-templates}
|
|
|
|
| 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 |
|
|
|
|
## Пример запроса {#example-request}
|
|
|
|
```bash
|
|
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}'
|
|
```
|
|
|
|
## Пример ответа {#example-response}
|
|
|
|
```json
|
|
{
|
|
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
|
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/collage.png",
|
|
"originalSize": 2456789,
|
|
"processedSize": 1823456
|
|
}
|
|
```
|
|
|
|
## Примечания {#notes}
|
|
|
|
- Загрузите несколько файлов изображений в multipart-запросе. Изображения назначаются ячейкам шаблона в порядке загрузки.
|
|
- Если загружено больше изображений, чем поддерживает шаблон, лишние изображения игнорируются.
|
|
- Поддерживаются входные форматы HEIC, RAW, PSD и SVG (декодируются автоматически).
|
|
- Базовый размер холста составляет 2400px по самой длинной стороне, масштабируемый в соответствии с выбранным соотношением сторон.
|
|
- Когда `aspectRatio` имеет значение `"free"`, холст по умолчанию использует 4:3 (2400x1800).
|
|
- Значения `panX`/`panY` каждой ячейки сдвигают окно обрезки внутри ячейки. Значение 100 полностью смещает к одному краю, -100 к другому.
|
|
- Цвет фона `"transparent"` сохраняется только при выходных форматах `png`, `webp` или `avif`.
|