Overview
Requires ImageMagick (`convert`), exiftool, and tesseract on PATH. Scripts are Python 3.11+, run via `uv run`.
Recipes
Copy-paste command sequences agents can run via uv run.
Convert PNG to JPEG
uv run scripts/convert.py --input photo.png --format jpgResize for web (max width 1200, keep aspect)
uv run scripts/resize.py --input hero.png --width 1200Crop a thumbnail from coordinates
uv run scripts/crop.py --input photo.jpg --width 400 --height 400 --x 100 --y 50Rotate 90° clockwise
uv run scripts/rotate.py --input scan.png --degrees 90Mirror horizontally
uv run scripts/flip.py --input photo.png --direction horizontalShrink file size for sharing
uv run scripts/optimize.py --input large.pngRead camera metadata before editing
uv run scripts/read_exif.py --input IMG_1234.jpgStrip GPS and camera info before upload
uv run scripts/strip_metadata.py --input IMG_1234.jpgOCR text from a screenshot
uv run scripts/ocr.py --input screenshot.pngOperations
Each script returns structured JSON — see the script contract.
| Op ID | Script | Common flags |
|---|---|---|
image.convert | convert.py | --input |
image.crop | crop.py | --input |
image.flip | flip.py | --input |
image.ocr | ocr.py | --input |
image.optimize | optimize.py | --input |
image.read_exif | read_exif.py | --input |
image.resize | resize.py | --input |
image.rotate | rotate.py | --input |
image.strip_metadata | strip_metadata.py | --input |
Do not use for
- Video timeline edits (use `video-transformation`)
- PDF or vector graphics
- RAW/developed photo workflows (develop first, then `convert.py`)