bim-image

Convert, resize, annotate, and compare images from the command line. Useful anywhere a pipeline produces or consumes image files — site visit photos from a phone, renderings from a visualization model, scanned drawings. Handles HEIC natively so your assistant doesn't have to ask you to convert first.

Image format conversion, metadata, annotation, and QA for AEC workflows. Handles site photos (HEIC), renderings (PNG/JPG), and drawing scans (TIFF).

Requirements

Vendored sidebinaries — verified by bim doctor --json:

Supported formats

Input: PNG, JPG, TIFF, WebP, BMP, HEIC, HEIF Output: PNG, JPG, TIFF, BMP (HEIC output not supported)

Verbs

Verb What it does
bim image info <file> format, dimensions, color model, EXIF presence
bim image convert --in --out [--format] [--quality] convert between formats
bim image resize --in --out [--width] [--height] [--max-edge] [--fit] [--rotate] [--auto-orient] resize, rotate, fix orientation
bim image exif read --in GPS, datetime, make/model, orientation as JSON
bim image exif strip --in --out metadata-free copy
bim image exif set --in --out --tag --value write one EXIF tag
bim image annotate --in --out --ops JSON draw rects, lines, arrows, text onto image
bim image diff --a --b [--out] [--threshold] [--fail-over] pixel-level comparison; exit 1 if diff ratio exceeds fail-over
bim image to-pdf --out [--page-size A4|letter] [--dpi] files... wrap images as PDF pages

annotate ops format

[
  {"type":"rect","x":100,"y":200,"width":300,"height":150,"color":"#ff0000","linewidth":2,"filled":false},
  {"type":"text","x":100,"y":195,"text":"revise","color":"#ff0000","size":18}
]

Supported types: rect, line, arrow, text. Pass "-" to --ops to read NDJSON from stdin.

For agent use: /image/llms.txt