Files
SnapOtter/apps/docs/uk/api/image-engine.md
T
SnapOtterandGitHub 4963ab3bbd feat(docs-i18n): translate all documentation into 20 languages
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.
2026-07-11 13:52:47 +08:00

212 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
description: "Довідник операцій рушія зображень. Усі операції обробки зображень на основі Sharp та їхні параметри."
i18n_source_hash: 42febdf85fa8
i18n_provenance: human
i18n_output_hash: 9aa73cb2e6da
---
# Рушій зображень {#image-engine}
Пакет `@snapotter/image-engine` обробляє всі операції із зображеннями, що не належать до AI. Він обгортає [Sharp](https://sharp.pixelplumbing.com/) і виконується повністю в межах процесу без зовнішніх залежностей.
## Операції {#operations}
### resize {#resize}
Масштабувати зображення до конкретних розмірів або за відсотком.
| Параметр | Тип | Опис |
|---|---|---|
| `width` | number | Цільова ширина в пікселях |
| `height` | number | Цільова висота в пікселях |
| `fit` | string | `cover`, `contain`, `fill`, `inside` або `outside` |
| `withoutEnlargement` | boolean | Якщо true, не збільшуватиме менші зображення |
| `percentage` | number | Масштабувати за відсотком замість абсолютних розмірів |
Можна задати `width`, `height` або обидва. Якщо задати лише один, інший обчислюється для збереження співвідношення сторін.
### crop {#crop}
Вирізати прямокутну область із зображення.
| Параметр | Тип | Опис |
|---|---|---|
| `left` | number | Зсув X від лівого краю |
| `top` | number | Зсув Y від верхнього краю |
| `width` | number | Ширина області обрізання |
| `height` | number | Висота області обрізання |
| `unit` | string | `px` (за замовчуванням) або `percent` |
### rotate {#rotate}
Повернути зображення на заданий кут.
| Параметр | Тип | Опис |
|---|---|---|
| `angle` | number | Кут повороту в градусах (0-360) |
| `background` | string | Колір заливки відкритої області (за замовчуванням: `#000000`). Застосовується лише до кутів, відмінних від 90 градусів. |
### flip {#flip}
Віддзеркалити зображення горизонтально, вертикально або обидва способи. Принаймні один має бути true.
| Параметр | Тип | Опис |
|---|---|---|
| `horizontal` | boolean | Віддзеркалити зліва направо |
| `vertical` | boolean | Віддзеркалити зверху вниз |
### convert {#convert}
Змінити формат зображення.
| Параметр | Тип | Опис |
|---|---|---|
| `format` | string | Цільовий формат: `jpg`, `png`, `webp`, `avif`, `tiff`, `gif`, `jxl`, `heic`, `heif`, `bmp`, `ico`, `jp2`, `qoi` |
| `quality` | number | Якість стиснення (1-100, застосовується до форматів зі втратами) |
Перші сім форматів (від `jpg` до `jxl`) кодуються Sharp у межах процесу. Решта форматів використовують зовнішні кодери на рівні API: `heic`/`heif` через heif-enc, `bmp`/`ico` через ImageMagick, `jp2` через opj_compress, а `qoi` через вбудований кодек TypeScript.
### compress {#compress}
Зменшити розмір файлу, зберігаючи той самий формат.
| Параметр | Тип | Опис |
|---|---|---|
| `quality` | number | Цільова якість (1-100) |
| `targetSizeBytes` | number | Опціональний цільовий розмір файлу в байтах |
| `format` | string | Опціональне перевизначення формату |
### strip-metadata {#strip-metadata}
Видалити метадані EXIF, IPTC, XMP та ICC із зображення. Без параметрів (або з `stripAll: true`) видаляє все. Передайте окремі прапорці для вибіркового видалення.
| Параметр | Тип | Опис |
|---|---|---|
| `stripAll` | boolean | Видалити всі метадані (за замовчуванням, коли прапорці не задано) |
| `stripExif` | boolean | Видалити дані EXIF (включно з GPS, якщо `stripGps` не задано окремо) |
| `stripGps` | boolean | Видалити дані GPS-локації |
| `stripIcc` | boolean | Видалити колірний профіль ICC |
| `stripXmp` | boolean | Видалити метадані XMP |
### Корекції кольору {#color-adjustments}
Ці операції змінюють властивості кольору зображення. Кожна приймає одне числове значення.
| Операція | Параметр | Діапазон | Опис |
|---|---|---|---|
| `brightness` | `value` | -100 до 100 | Налаштувати яскравість |
| `contrast` | `value` | -100 до 100 | Налаштувати контраст |
| `saturation` | `value` | -100 до 100 | Налаштувати насиченість кольору |
### Колірні фільтри {#color-filters}
Ці застосовують фіксоване перетворення кольору. Вони не приймають параметрів.
| Операція | Опис |
|---|---|
| `grayscale` | Перетворити на відтінки сірого |
| `sepia` | Застосувати тон сепії |
| `invert` | Інвертувати всі кольори |
### Колірні канали {#color-channels}
Налаштувати окремі колірні канали RGB. Значення є множниками, де 100 = без змін.
| Параметр | Тип | Опис |
|---|---|---|
| `red` | number | Множник червоного каналу (0 до 200, 100 = без змін) |
| `green` | number | Множник зеленого каналу (0 до 200, 100 = без змін) |
| `blue` | number | Множник синього каналу (0 до 200, 100 = без змін) |
### sharpen {#sharpen}
Просте підвищення різкості, кероване одним значенням.
| Параметр | Тип | Опис |
|---|---|---|
| `value` | number | Інтенсивність підвищення різкості (0 до 100). Зіставляється з сигмою Гауса 0.5-10. |
### sharpen-advanced {#sharpen-advanced}
Розширене підвищення різкості з трьома доступними методами й опціональним попереднім проходом зменшення шуму.
| Параметр | Тип | Опис |
|---|---|---|
| `method` | string | `adaptive`, `unsharp-mask` або `high-pass` |
| `sigma` | number | Радіус розмиття за Гаусом, 0.5-10 (адаптивний) |
| `m1` | number | Підвищення різкості плоских областей, 0-10 (адаптивне) |
| `m2` | number | Підвищення різкості текстурованих областей, 0-20 (адаптивне) |
| `x1` | number | Поріг плоского/зубчастого, 0-10 (адаптивний) |
| `y2` | number | Макс. освітлення (обмеження ореолу), 0-50 (адаптивне) |
| `y3` | number | Макс. затемнення (обмеження ореолу), 0-50 (адаптивне) |
| `amount` | number | Відсоток інтенсивності, 0-500 (unsharp-mask) |
| `radius` | number | Радіус розмиття, 0.1-5.0 (unsharp-mask) |
| `threshold` | number | Мінімальна яскравість краю, 0-255 (unsharp-mask) |
| `strength` | number | Сила змішування, 0-100 (high-pass) |
| `kernelSize` | number | `3` або `5` для ядра 3x3 / 5x5 (high-pass) |
| `denoise` | string | Попередній прохід зменшення шуму: `off`, `light`, `medium` або `strong` |
Параметри залежать від методу. Надавайте лише ті, що стосуються обраного методу.
### color-blindness {#color-blindness}
Симулювати порушення колірного зору за допомогою матриці рекомбінації кольорів 3x3.
| Параметр | Тип | Опис |
|---|---|---|
| `type` | string | Один із: `protanopia`, `deuteranopia`, `tritanopia`, `protanomaly`, `deuteranomaly`, `tritanomaly`, `achromatopsia`, `blueConeMonochromacy` |
### edit-metadata {#edit-metadata}
Записати або видалити окремі поля метаданих EXIF/IPTC без видалення всього блоку.
| Параметр | Тип | Опис |
|---|---|---|
| `artist` | string | Тег EXIF Artist |
| `copyright` | string | Тег EXIF Copyright |
| `imageDescription` | string | Тег EXIF ImageDescription |
| `software` | string | Тег EXIF Software |
| `dateTime` | string | Тег EXIF DateTime |
| `dateTimeOriginal` | string | Тег EXIF DateTimeOriginal |
| `clearGps` | boolean | Видалити всі теги GPS |
| `fieldsToRemove` | string[] | Список імен полів EXIF для видалення |
Усі параметри опціональні. Поля, перелічені в `fieldsToRemove`, видаляються з наявного блоку EXIF. Поля, задані через іменовані параметри, записуються (або перезаписуються). Двійкові/небезпечні ключі на кшталт MakerNote мовчки ігноруються.
## Визначення формату {#format-detection}
Рушій визначає вхідні формати автоматично за заголовками файлів, а не лише за розширеннями. Це означає, що файл `.jpg`, який насправді є PNG, буде оброблено правильно. Визначення використовує багаторівневий підхід: спочатку магічні байти, потім розширення файлу як резервний варіант.
SnapOtter підтримує **55+ вхідних форматів** та **13 вихідних форматів**, включно з 23 форматами RAW камер від 20+ брендів, професійними форматами (PSD, EPS, OpenEXR, HDR), сучасними кодеками (JPEG XL, AVIF, HEIC, QOI, JPEG 2000) та науковими/ігровими форматами (FITS, DDS). Декодування виконується Sharp нативно, де це можливо, з автоматичним переходом до ImageMagick, LibRaw та спеціалізованих CLI-декодерів.
Повний перелік дивіться на сторінці [Підтримувані формати](/uk/guide/supported-formats).
## Витягання метаданих {#metadata-extraction}
Інструмент `info` повертає метадані зображення. Повний довідник полів дивіться в [Image Info](/uk/tools/image/info).
```json
{
"filename": "photo.jpg",
"fileSize": 2450000,
"width": 4032,
"height": 3024,
"format": "jpeg",
"channels": 3,
"hasAlpha": false,
"colorSpace": "srgb",
"density": 72,
"isProgressive": false,
"hasExif": true,
"hasIcc": true,
"hasXmp": false,
"bitDepth": "8",
"pages": 1,
"histogram": [
{ "channel": "red", "min": 0, "max": 255, "mean": 128.45, "stdev": 52.31 },
{ "channel": "green", "min": 2, "max": 253, "mean": 115.22, "stdev": 48.76 },
{ "channel": "blue", "min": 0, "max": 250, "mean": 102.89, "stdev": 55.14 }
]
}
```