--- description: "Справочник по операциям движка изображений. Все операции обработки изображений на базе Sharp и их параметры." i18n_source_hash: 42febdf85fa8 i18n_provenance: human i18n_output_hash: b6b18f196fbd --- # Движок изображений {#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 (нерезкая маска) | | `radius` | number | Радиус размытия, 0.1-5.0 (нерезкая маска) | | `threshold` | number | Минимальная яркость края, 0-255 (нерезкая маска) | | `strength` | number | Сила смешивания, 0-100 (высокочастотный) | | `kernelSize` | number | `3` или `5` для ядра 3x3 / 5x5 (высокочастотный) | | `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-декодеры. См. страницу [Поддерживаемые форматы](/ru/guide/supported-formats) для полного списка. ## Извлечение метаданных {#metadata-extraction} Инструмент `info` возвращает метаданные изображения. См. [Информация об изображении](/ru/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 } ] } ```