mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
- Create 53 per-tool VitePress documentation pages with accurate parameters from Zod schemas, example requests, and response formats - Add root llms.txt for LLM-friendly repo browsing - Fix OpenAPI spec: add auth and 422 error schemas to edit-metadata/inspect and strip-metadata/inspect sub-routes - Fix tool count inconsistency (52 -> 53) across landing site, e2e tests, and local docs - Rename color-adjustments.ts to adjust-colors.ts to match tool ID - Update VitePress sidebar with all 8 tool categories and top nav
2.3 KiB
2.3 KiB
Content-Aware Resize
Seam carving resize that intelligently removes or adds pixels along paths of least visual importance, preserving important content and optionally protecting faces.
API Endpoint
POST /api/v1/tools/content-aware-resize
Processing: Synchronous (returns result directly)
Model bundle: None required for basic operation. Face protection uses the face-detection bundle (200-300 MB) if enabled.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| file | file | Yes | - | Image file (multipart) |
| width | integer | No | - | Target width in pixels |
| height | integer | No | - | Target height in pixels |
| protectFaces | boolean | No | false |
Detect and protect faces from seam removal |
| blurRadius | number | No | 4 |
Pre-processing blur radius for energy calculation (0-20) |
| sobelThreshold | number | No | 2 |
Sobel edge detection threshold (1-20). Higher values make the algorithm more aggressive |
| square | boolean | No | false |
Resize to a square (uses the smaller dimension) |
At least one of width, height, or square must be specified.
Example Request
curl -X POST http://localhost:13490/api/v1/tools/content-aware-resize \
-F "file=@landscape.jpg" \
-F 'settings={"width":800,"protectFaces":true}'
Response (200 OK)
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"downloadUrl": "/api/v1/download/{jobId}/landscape_seam.png",
"originalSize": 450000,
"processedSize": 380000,
"width": 800,
"height": 600
}
Notes
- This tool returns a synchronous response (not 202 async). Processing happens inline.
- Uses the
caireseam carving library for content-aware resizing. - Only reduces dimensions (removes seams). Cannot expand an image beyond its original size.
- The
protectFacesoption uses AI face detection to mark face regions as high-energy, preventing seams from passing through faces. blurRadiuscontrols smoothing before energy map calculation. Higher values make the energy map more uniform, which can help with noisy images.sobelThresholdaffects how aggressively edges are detected. Lower values preserve more subtle edges.- Output is always PNG format.
- Supports HEIC/HEIF, RAW, TGA, PSD, EXR, and HDR input formats via automatic decoding.