This page was machine-translated. Spotted a mistake?Help improve it.
Skip to content

Движок изображений

Пакет @snapotter/image-engine обрабатывает все не-AI операции с изображениями. Он оборачивает Sharp и работает полностью внутри процесса без внешних зависимостей.

Операции

resize

Масштабирование изображения до конкретных размеров или в процентах.

ПараметрТипОписание
widthnumberЦелевая ширина в пикселях
heightnumberЦелевая высота в пикселях
fitstringcover, contain, fill, inside или outside
withoutEnlargementbooleanЕсли true, не увеличивает меньшие изображения
percentagenumberМасштабировать в процентах вместо абсолютных размеров

Можно задать width, height или оба. Если задать только один, другой вычисляется для сохранения соотношения сторон.

crop

Вырезание прямоугольной области из изображения.

ПараметрТипОписание
leftnumberСмещение X от левого края
topnumberСмещение Y от верхнего края
widthnumberШирина области обрезки
heightnumberВысота области обрезки
unitstringpx (по умолчанию) или percent

rotate

Поворот изображения на заданный угол.

ПараметрТипОписание
anglenumberУгол поворота в градусах (0-360)
backgroundstringЦвет заливки открывшейся области (по умолчанию: #000000). Применяется только к углам, не кратным 90 градусам.

flip

Отражение изображения по горизонтали, вертикали или обоим осям. Хотя бы одно значение должно быть true.

ПараметрТипОписание
horizontalbooleanОтразить слева направо
verticalbooleanОтразить сверху вниз

convert

Изменение формата изображения.

ПараметрТипОписание
formatstringЦелевой формат: jpg, png, webp, avif, tiff, gif, jxl, heic, heif, bmp, ico, jp2, qoi
qualitynumberКачество сжатия (1-100, применяется к форматам с потерями)

Первые семь форматов (от jpg до jxl) кодируются Sharp внутри процесса. Остальные форматы используют внешние кодеры на уровне API: heic/heif через heif-enc, bmp/ico через ImageMagick, jp2 через opj_compress и qoi через встроенный TypeScript-кодек.

compress

Уменьшение размера файла с сохранением того же формата.

ПараметрТипОписание
qualitynumberЦелевое качество (1-100)
targetSizeBytesnumberОпциональный целевой размер файла в байтах
formatstringОпциональное переопределение формата

strip-metadata

Удаление метаданных EXIF, IPTC, XMP и ICC из изображения. Без параметров (или с stripAll: true) удаляет всё. Передайте отдельные флаги для выборочного удаления.

ПараметрТипОписание
stripAllbooleanУдалить все метаданные (по умолчанию, если флаги не заданы)
stripExifbooleanУдалить данные EXIF (включая GPS, если stripGps не задан отдельно)
stripGpsbooleanУдалить данные о GPS-местоположении
stripIccbooleanУдалить цветовой профиль ICC
stripXmpbooleanУдалить метаданные XMP

Настройки цвета

Эти операции изменяют цветовые свойства изображения. Каждая принимает одно числовое значение.

ОперацияПараметрДиапазонОписание
brightnessvalue-100 до 100Настройка яркости
contrastvalue-100 до 100Настройка контрастности
saturationvalue-100 до 100Настройка насыщенности цвета

Цветовые фильтры

Применяют фиксированное цветовое преобразование. Не принимают параметров.

ОперацияОписание
grayscaleПреобразовать в оттенки серого
sepiaПрименить тон сепии
invertИнвертировать все цвета

Цветовые каналы

Настройка отдельных цветовых каналов RGB. Значения являются множителями, где 100 = без изменений.

ПараметрТипОписание
rednumberМножитель красного канала (0 до 200, 100 = без изменений)
greennumberМножитель зелёного канала (0 до 200, 100 = без изменений)
bluenumberМножитель синего канала (0 до 200, 100 = без изменений)

sharpen

Простое повышение резкости, управляемое одним значением.

ПараметрТипОписание
valuenumberИнтенсивность резкости (0 до 100). Сопоставляется с гауссовой сигмой 0.5-10.

sharpen-advanced

Продвинутое повышение резкости с тремя выбираемыми методами и опциональным предварительным проходом шумоподавления.

ПараметрТипОписание
methodstringadaptive, unsharp-mask или high-pass
sigmanumberРадиус гауссова размытия, 0.5-10 (адаптивный)
m1numberРезкость плоских областей, 0-10 (адаптивный)
m2numberРезкость текстурированных областей, 0-20 (адаптивный)
x1numberПорог плоское/зубчатое, 0-10 (адаптивный)
y2numberМаксимальное осветление (ограничение ореола), 0-50 (адаптивный)
y3numberМаксимальное затемнение (ограничение ореола), 0-50 (адаптивный)
amountnumberПроцент интенсивности, 0-500 (нерезкая маска)
radiusnumberРадиус размытия, 0.1-5.0 (нерезкая маска)
thresholdnumberМинимальная яркость края, 0-255 (нерезкая маска)
strengthnumberСила смешивания, 0-100 (высокочастотный)
kernelSizenumber3 или 5 для ядра 3x3 / 5x5 (высокочастотный)
denoisestringПредварительный проход шумоподавления: off, light, medium или strong

Параметры специфичны для метода. Указывайте только те, что относятся к выбранному методу.

color-blindness

Симуляция дефицита цветового зрения с помощью матрицы цветовой рекомбинации 3x3.

ПараметрТипОписание
typestringОдно из: protanopia, deuteranopia, tritanopia, protanomaly, deuteranomaly, tritanomaly, achromatopsia, blueConeMonochromacy

edit-metadata

Запись или удаление отдельных полей метаданных EXIF/IPTC без удаления всего блока.

ПараметрТипОписание
artiststringТег EXIF Artist
copyrightstringТег EXIF Copyright
imageDescriptionstringТег EXIF ImageDescription
softwarestringТег EXIF Software
dateTimestringТег EXIF DateTime
dateTimeOriginalstringТег EXIF DateTimeOriginal
clearGpsbooleanУдалить все теги GPS
fieldsToRemovestring[]Список имён полей EXIF для удаления

Все параметры опциональны. Поля, перечисленные в fieldsToRemove, удаляются из существующего блока EXIF. Поля, заданные через именованные параметры, записываются (или перезаписываются). Двоичные/небезопасные ключи, такие как MakerNote, молча игнорируются.

Определение формата

Движок определяет входные форматы автоматически по заголовкам файлов, а не только по расширениям. Это значит, что файл .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-декодеры.

См. страницу Поддерживаемые форматы для полного списка.

Извлечение метаданных

Инструмент 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 }
  ]
}