image-crop-bounds-clamp
편집기용 자르기 상자 계산입니다. 경계를 검증하고, 끌기를 페이지 안으로 고정하고, 출력 픽셀을 렌더 전에 예산으로 제한합니다.
어떤 문제를 푸나The problem
자르기 도구의 버그는 대부분 경계 버그입니다. 상자가 페이지 밖으로 끌려 나가거나, 내보내기가 20,000x20,000 비트맵을 요구합니다. 이 함수들은 포인트 단위로 검증하고 고정하며 비정상적인 래스터 크기는 거부합니다.
이런 분께 맞습니다Who it is for
PDF나 캔버스 편집기에 자르기 기능을 만드는 개발자.
무엇을 하나What it does
- validateCrop은 복사본을 돌려주거나 RangeError를 던집니다.
- moveCrop은 이동량을 페이지 안으로 고정합니다.
- cropPixels(box, ppi, {maxDimension, maxPixels})는 해상도에서 픽셀 크기를 계산하고 예산을 넘으면 거부합니다.
- 옵션에 null을 줘도 기본값으로 처리합니다.
직접 돌려 본 출력Real output
저장소의 examples 폴더를 실행한 결과입니다.
$ node examples/quickstart.mjs
valid {"x":100,"y":100,"width":200,"height":150}
drag far {"x":412,"y":0,"width":200,"height":150} (clamped inside the page)
at 300 dpi {"width":833,"height":625}
reject crop off page -> crop outside bounds
reject absurd output -> pixel budget exceeded
알아둘 한계Limits
- 회전하지 않은 하나의 좌표계(1인치 72포인트)만 다룹니다. 디코딩, 리샘플링, 회전 변환은 호출자가 먼저 처리해야 합니다.
받아서 쓰기Get it
# 저장소를 받습니다
git clone https://github.com/Kein-chronicle/image-crop-bounds-clamp.git
# Claude Code 스킬로 쓰려면 이 폴더 이름으로 받습니다
git clone https://github.com/Kein-chronicle/image-crop-bounds-clamp.git ~/.claude/skills/bounded-image-crop
정보Info
- 분류Category
- 문서·데이터 라이브러리Document & data libraries
- 형태Type
- 라이브러리Library
- 라이선스License
- MIT
- 필요한 것Requires
- Node.js 22 이상
- 저장소Repository
- image-crop-bounds-clamp
- 토픽Topics
image-cropgeometryjavascriptesmpdfcanvasvalidationzero-dependencies
2026-10-18 기준: 저장소의 테스트를 로컬에서 실행해 통과했고, 예제 출력은 저장소의 examples 폴더를 실제로 실행한 결과입니다.