Resize, crop, rotate, convert, compress and watermark an image in one call. Reads JPEG, PNG, GIF, WebP, TIFF, BMP, HEIC and AVIF. Built to be safe to hand to an AI agent: typed, allowlisted operations instead of an ImageMagick command line, and a clear refusal when the file is not really an image.
Resizes, crops, rotates, flips, grayscales, blurs, watermarks and re-encodes images with
ImageMagick, in a fixed and documented operation order.
Processes a single image or a batch of up to 100, uploaded together or passed as a list of URLs in
files. A failed image becomes a dataset row with ok: false and is skipped rather than ending the
run; only a colliding output key gets a -2 suffix. OUTPUT is the image for a single run and a
ZIP for a batch, falling back to a JSON manifest past 192 MB of output.
Bounds a run with a shared budget (100 images, 512 MB of input, 128 MP per image, 4,000 MP per run)
and gives downloads a 60-second timeout, so a dead host cannot stall the queue behind it.
Keeps the frames of an animated GIF when the output is also GIF, and warns when a target format
can only hold one frame.
Reads JPEG, PNG, GIF, WebP, TIFF, BMP, HEIC and AVIF; writes JPEG, PNG, WebP, AVIF, TIFF and GIF.
Leaving the output format empty keeps the source format, so a pure resize stays a PNG.
Identifies the source from its magic bytes rather than its extension, and refuses video, PDF and
PostScript with an explanation.
Accepts the source as a URL (including the Console file upload field) or as base64.
Takes typed, allowlisted operations rather than an ImageMagick argument string. No caller value
reaches the command line unvalidated, and the container's policy.xml denies the coders that read
or write outside the image.