mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
Reconcile every tool page's parameters, defaults, and response shape against the tool's Zod settings schema and executionHint in code. Notable fixes: color-palette (add count + format params, hex output, median-cut algorithm), favicon (add 5 params, was documented as having none), qr-generate (add logoDataUri), convert (add ppm/eps/tga formats), video-loudnorm (-16 LUFS not -14), smart-crop (async 202 not sync 200), images-to-video (1080x1080 square), and several output-filename and behavior-note corrections. Also normalize API endpoint paths to /api/v1/tools/<id> (no modality segment) and standardize curl examples on the Docker API port 1349. Verified with a clean docs build.
2.7 KiB
2.7 KiB
description
| description |
|---|
| Convert images between formats including modern formats like AVIF, JXL, and HEIC. |
Convert
Convert images between formats. Supports common web formats as well as specialized formats like HEIC, JXL, BMP, ICO, JP2, QOI, and PSD.
API Endpoint
POST /api/v1/tools/convert
Accepts multipart form data with an image file and a JSON settings field.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| format | string | Yes | - | Target format: jpg, png, webp, avif, tiff, gif, heic, heif, jxl, bmp, ico, jp2, qoi, psd, ppm, eps, tga |
| quality | number | No | - | Output quality (1-100). Applies to lossy formats like jpg, webp, avif, heic. |
Supported Output Formats
| Format | Type | Notes |
|---|---|---|
| jpg | Lossy | JPEG, best compatibility |
| png | Lossless | Supports transparency |
| webp | Both | Modern web format, good compression |
| avif | Lossy | Next-gen format, excellent compression |
| tiff | Both | Print/publishing workflows |
| gif | Lossless | Limited to 256 colors |
| heic / heif | Lossy | Apple ecosystem format |
| jxl | Both | JPEG XL, next-gen format |
| bmp | Lossless | Uncompressed bitmap |
| ico | Lossless | Windows icon format |
| jp2 | Lossy | JPEG 2000 |
| qoi | Lossless | Quite OK Image format |
| psd | Layered | Adobe Photoshop (requires ImageMagick) |
| ppm | Lossless | Portable Pixmap (PPM/PGM/PBM) |
| eps | Vector | Encapsulated PostScript |
| tga | Lossless | Targa image format |
Example Request
Convert to WebP:
curl -X POST http://localhost:1349/api/v1/tools/convert \
-H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \
-F 'settings={"format": "webp", "quality": 85}'
Convert to PNG (lossless):
curl -X POST http://localhost:1349/api/v1/tools/convert \
-H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \
-F 'settings={"format": "png"}'
Example Response
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/photo.webp",
"originalSize": 2450000,
"processedSize": 680000
}
Notes
- The output filename extension is automatically updated to match the target format.
- SVG inputs are rasterized at 300 DPI before conversion.
- PSD conversion requires ImageMagick to be installed on the server.
- BMP, EPS, ICO, JP2, JXL, PPM, QOI, and TGA use specialized CLI encoders and bypass Sharp processing.
- HEIC/HEIF encoding uses the system HEIC encoder library.
- Input formats are broad: JPEG, PNG, WebP, AVIF, TIFF, GIF, HEIC, RAW (CR2, NEF, ARW, etc.), PSD, SVG, BMP, and more.