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
withoutEnlargementbooleantrue이면 더 작은 이미지를 확대하지 않음
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모든 메타데이터 제거(플래그가 설정되지 않았을 때 기본값)
stripExifbooleanEXIF 데이터 제거(stripGps가 별도로 설정되지 않은 경우 GPS 포함)
stripGpsbooleanGPS 위치 데이터 제거
stripIccbooleanICC 색상 프로파일 제거
stripXmpbooleanXMP 메타데이터 제거

색상 조정

이 작업들은 이미지의 색상 속성을 수정합니다. 각각 하나의 숫자 값을 받습니다.

작업매개변수범위설명
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(하이패스)
kernelSizenumber3x3 / 5x5 커널에 대해 3 또는 5(하이패스)
denoisestring노이즈 감소 사전 패스: off, light, medium, 또는 strong

매개변수는 방식별로 다릅니다. 선택한 방식에 관련된 것만 제공하세요.

color-blindness

3x3 색상 재조합 행렬을 사용해 색각 이상을 시뮬레이션합니다.

매개변수타입설명
typestring다음 중 하나: protanopia, deuteranopia, tritanopia, protanomaly, deuteranomaly, tritanomaly, achromatopsia, blueConeMonochromacy

edit-metadata

전체 블록을 제거하지 않고 개별 EXIF/IPTC 메타데이터 필드를 작성하거나 제거합니다.

매개변수타입설명
artiststringEXIF Artist 태그
copyrightstringEXIF Copyright 태그
imageDescriptionstringEXIF ImageDescription 태그
softwarestringEXIF Software 태그
dateTimestringEXIF DateTime 태그
dateTimeOriginalstringEXIF DateTimeOriginal 태그
clearGpsboolean모든 GPS 태그 제거
fieldsToRemovestring[]삭제할 EXIF 필드명 목록

모든 매개변수는 선택 사항입니다. fieldsToRemove에 나열된 필드는 기존 EXIF 블록에서 삭제됩니다. 명명된 매개변수를 통해 설정된 필드는 기록(또는 덮어쓰기)됩니다. MakerNote 같은 바이너리/안전하지 않은 키는 조용히 무시됩니다.

형식 감지

엔진은 파일 확장자뿐 아니라 파일 헤더로부터 입력 형식을 자동으로 감지합니다. 따라서 실제로는 PNG인 .jpg 파일도 올바르게 처리됩니다. 감지는 다층 방식을 사용합니다: 먼저 매직 바이트, 그다음 대체 수단으로 파일 확장자를 사용합니다.

SnapOtter는 55개 이상의 입력 형식13개의 출력 형식을 지원하며, 여기에는 20개 이상 브랜드의 카메라 RAW 형식 23종, 전문 형식(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 }
  ]
}