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.
4.1 KiB
4.1 KiB
description, i18n_source_hash, i18n_provenance, i18n_output_hash
| description | i18n_source_hash | i18n_provenance | i18n_output_hash |
|---|---|---|---|
| Изменение размера изображений по пикселям, процентам или с режимами вписывания. | 53866e8266b8 | human | dac4c31fbce7 |
Изменение размера изображения
Изменение размера изображений путём указания точных пиксельных размеров, процентного коэффициента масштабирования или режима вписывания, который управляет тем, как изображение адаптируется к целевым размерам.
Эндпоинт API
POST /api/v1/tools/image/resize
Принимает multipart form data с файлом изображения и JSON-полем settings.
Параметры
| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
| width | integer | Нет | - | Целевая ширина в пикселях (максимум 16383) |
| height | integer | Нет | - | Целевая высота в пикселях (максимум 16383) |
| fit | string | Нет | "contain" |
Как изображение вписывается в размеры: contain, cover, fill, inside, outside |
| withoutEnlargement | boolean | Нет | false |
Не увеличивать масштаб, если изображение меньше целевого |
| percentage | number | Нет | - | Масштабирование в процентах (например, 50 для половинного размера) |
Должен быть указан хотя бы один из width, height или percentage.
Режимы вписывания
- contain - изменить размер так, чтобы вписаться в размеры, сохраняя соотношение сторон (может оставить пустое пространство)
- cover - изменить размер так, чтобы покрыть размеры, сохраняя соотношение сторон (может обрезать)
- fill - растянуть точно под размеры (игнорирует соотношение сторон)
- inside - как
contain, но только уменьшает, никогда не увеличивает - outside - как
cover, но только уменьшает, никогда не увеличивает
Пример запроса
curl -X POST http://localhost:1349/api/v1/tools/image/resize \
-H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \
-F 'settings={"width": 800, "height": 600, "fit": "contain"}'
Изменение размера в процентах:
curl -X POST http://localhost:1349/api/v1/tools/image/resize \
-H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \
-F 'settings={"percentage": 50}'
Пример ответа
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/photo.jpg",
"originalSize": 2450000,
"processedSize": 980000
}
Примечания
- Максимальный размер — 16383 пикселя по любой оси (ограничение Sharp/libvips).
- Выходной формат совпадает с входным. Входные данные в форматах HEIC, RAW, PSD и SVG автоматически декодируются перед обработкой.
- Ориентация по EXIF применяется автоматически перед изменением размера.
- Флаг
withoutEnlargementполезен для пакетной обработки, когда некоторые изображения могут уже быть меньше целевого.