Image processing for Jennifer through the ImageMagick 7 command line: resize, crop, thumbnail, rotate, strip metadata, annotate, watermark, convert between formats, identify, compare and montage. Built for images and file names you do not control: no shell, formats pinned and allow-listed, file names and text checked, memory, size and time limits on every command.
jvc add @deckyard/magickOr unpack src/ from a release archive (deckyard-magick-<version>.tar.gz)
into vendor/deckyard/magick/.
import "@deckyard/magick/" as magick;
def c as magick.Config init magick.config();
def img as magick.Image init magick.open($c, "upload.jpg");
$img = magick.strip(magick.shrinkOnly(magick.autoOrient($img), 1600, 1600));
magick.write($c, magick.quality($img, 82), "photo.webp");
def info as magick.Info init magick.identify($c, "photo.webp");
io.printf("%dx%d %s\n", $info.width, $info.height, $info.format);
Jennifer 0.25.0 or newer and the default jennifer binary (the deck needs
the exec capability); ImageMagick 7 (magick) on the host.
tools/check-all.sh # the full gate, as CI runs it
jennifer test src/magick_test.j # tests; the live ones need ImageMagick 7
tools/check-docs.sh # docs against the codeThe tests that run ImageMagick return early where it is not installed, as in CI's container; run the suite on a machine with ImageMagick 7 before a release.
LGPL-3.0-only, see LICENSE. Copyright (C) 2026 mplx <mplx@jennifer-lang.dev>.
ImageMagick is a trademark of ImageMagick Studio LLC. This deck is not affiliated with or endorsed by it.