imagemagick

ImageMagick is a comprehensive, free, open-source software suite for creating, editing, converting, and manipulating images in over 250 formats. This skill covers command-line usage of ImageMagick tools for programmatic image processing.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "imagemagick" with this command: npx skills add mrgoonie/xxxnaper/mrgoonie-xxxnaper-imagemagick

ImageMagick Skill

ImageMagick is a comprehensive, free, open-source software suite for creating, editing, converting, and manipulating images in over 250 formats. This skill covers command-line usage of ImageMagick tools for programmatic image processing.

When to Use This Skill

Use this skill when:

  • Converting images between formats (PNG, JPEG, WebP, GIF, etc.)

  • Resizing, cropping, or transforming images

  • Applying effects, filters, or adjustments to images

  • Creating thumbnails or image previews

  • Batch processing multiple images

  • Compositing or combining images

  • Adding watermarks, borders, or text to images

  • Optimizing images for web or print

Core Concepts

Primary Commands

ImageMagick provides several command-line tools:

  • magick: Modern unified command for all operations (ImageMagick v7+)

  • convert: Legacy command for image conversion and manipulation (still widely used)

  • mogrify: Modify images in-place (batch processing)

  • identify: Display image metadata and properties

  • montage: Create image composites and contact sheets

  • composite: Overlay images

Note: In ImageMagick v7+, magick is the recommended command. Legacy convert syntax: convert input.png output.jpg becomes magick input.png output.jpg

Command Structure

Basic syntax:

magick [input-options] input-file [operations] [output-options] output-file

Operations are applied left to right in the order specified.

Geometry Specifications

ImageMagick uses geometry strings for dimensions:

  • 100x100

  • Resize to fit within 100×100 (maintains aspect ratio)

  • 100x100!

  • Force exact size (ignores aspect ratio)

  • 100x100^

  • Fill 100×100 (may crop, maintains aspect ratio)

  • 100x

  • Resize to width 100 (auto height)

  • x100

  • Resize to height 100 (auto width)

  • 50%

  • Scale to 50% of original

  • 100x100+10+20

  • 100×100 region at offset (10, 20)

Installation

macOS:

brew install imagemagick

Ubuntu/Debian:

sudo apt-get install imagemagick

Verify installation:

magick -version

or

convert -version

Common Operations

Format Conversion

Convert between image formats:

PNG to JPEG

magick input.png output.jpg

JPEG to WebP

magick input.jpg output.webp

Multiple formats

magick input.png output.jpg output.webp output.gif

Set JPEG quality (0-100)

magick input.png -quality 85 output.jpg

Convert with compression

magick input.png -quality 90 -strip output.jpg

Resizing

Resize images while maintaining aspect ratio:

Resize to fit within 800×600

magick input.jpg -resize 800x600 output.jpg

Resize to specific width (auto height)

magick input.jpg -resize 800x output.jpg

Resize to specific height (auto width)

magick input.jpg -resize x600 output.jpg

Resize to exact dimensions (ignores aspect ratio)

magick input.jpg -resize 800x600! output.jpg

Scale by percentage

magick input.jpg -resize 50% output.jpg

Resize only if larger (shrink only)

magick input.jpg -resize 800x600> output.jpg

Resize only if smaller (enlarge only)

magick input.jpg -resize 800x600< output.jpg

Cropping

Extract portions of images:

Crop 400×400 pixels starting at (100, 100)

magick input.jpg -crop 400x400+100+100 output.jpg

Crop from center

magick input.jpg -gravity center -crop 400x400+0+0 output.jpg

Remove virtual canvas after crop

magick input.jpg -crop 400x400+100+100 +repage output.jpg

Crop to aspect ratio from center

magick input.jpg -gravity center -crop 16:9 output.jpg

Resize + Crop (Thumbnail Generation)

Common pattern for creating square thumbnails:

Resize to fill 100×100, then crop from center

magick input.jpg -resize 100x100^ -gravity center -extent 100x100 output.jpg

Alternative using crop

magick input.jpg -resize 275x275^ -gravity center -crop 275x275+0+0 +repage output.jpg

Create thumbnail with specific background

magick input.jpg -resize 100x100 -background white -gravity center -extent 100x100 output.jpg

Effects and Filters

Apply visual effects:

Blur

magick input.jpg -blur 0x8 output.jpg

Gaussian blur with radius 5, sigma 3

magick input.jpg -gaussian-blur 5x3 output.jpg

Sharpen

magick input.jpg -sharpen 0x1 output.jpg

Grayscale

magick input.jpg -colorspace Gray output.jpg

Sepia tone

magick input.jpg -sepia-tone 80% output.jpg

Negate (invert colors)

magick input.jpg -negate output.jpg

Edge detection

magick input.jpg -edge 3 output.jpg

Emboss

magick input.jpg -emboss 2 output.jpg

Oil painting effect

magick input.jpg -paint 4 output.jpg

Charcoal drawing

magick input.jpg -charcoal 2 output.jpg

Adjustments

Modify brightness, contrast, and colors:

Adjust brightness (+/- 0-100)

magick input.jpg -brightness-contrast 10x0 output.jpg

Adjust contrast

magick input.jpg -brightness-contrast 0x20 output.jpg

Both brightness and contrast

magick input.jpg -brightness-contrast 10x20 output.jpg

Adjust saturation

magick input.jpg -modulate 100,150,100 output.jpg

Adjust hue

magick input.jpg -modulate 100,100,120 output.jpg

Auto level (normalize contrast)

magick input.jpg -auto-level output.jpg

Auto gamma correction

magick input.jpg -auto-gamma output.jpg

Normalize (stretch histogram)

magick input.jpg -normalize output.jpg

Rotation and Flipping

Transform image orientation:

Rotate 90 degrees clockwise

magick input.jpg -rotate 90 output.jpg

Rotate 180 degrees

magick input.jpg -rotate 180 output.jpg

Rotate counter-clockwise

magick input.jpg -rotate -90 output.jpg

Rotate with background color

magick input.jpg -background white -rotate 45 output.jpg

Flip vertically

magick input.jpg -flip output.jpg

Flip horizontally (mirror)

magick input.jpg -flop output.jpg

Auto-orient based on EXIF

magick input.jpg -auto-orient output.jpg

Borders and Frames

Add borders to images:

Add 10px black border

magick input.jpg -border 10x10 output.jpg

Add border with specific color

magick input.jpg -bordercolor red -border 10x10 output.jpg

Add frame effect

magick input.jpg -mattecolor gray -frame 10x10+5+5 output.jpg

Add shadow effect

magick input.jpg ( +clone -background black -shadow 80x3+5+5 )
+swap -background white -layers merge +repage output.jpg

Text and Watermarks

Add text overlays:

Add simple text

magick input.jpg -pointsize 30 -fill white -annotate +10+30 "Hello" output.jpg

Add text with positioning

magick input.jpg -gravity south -pointsize 20 -fill white
-annotate +0+10 "Copyright 2025" output.jpg

Add text with background

magick input.jpg -gravity center -pointsize 40 -fill white
-undercolor black -annotate +0+0 "Watermark" output.jpg

Add semi-transparent watermark

magick input.jpg ( -background none -fill "rgba(255,255,255,0.5)"
-pointsize 50 label:"DRAFT" ) -gravity center -compose over -composite output.jpg

Compositing

Combine multiple images:

Overlay watermark on image

magick input.jpg watermark.png -gravity southeast -composite output.jpg

Overlay with transparency

magick input.jpg watermark.png -gravity center
-compose over -composite output.jpg

Tile pattern

magick input.jpg pattern.png -compose over -tile -composite output.jpg

Side-by-side images

magick input1.jpg input2.jpg +append output.jpg

Stack images vertically

magick input1.jpg input2.jpg -append output.jpg

Format-Specific Options

Optimize for different formats:

JPEG with quality and strip metadata

magick input.png -quality 85 -strip output.jpg

Progressive JPEG

magick input.png -quality 85 -interlace Plane output.jpg

PNG with compression level (0-9)

magick input.jpg -quality 95 output.png

WebP with quality

magick input.jpg -quality 80 output.webp

WebP lossless

magick input.png -define webp:lossless=true output.webp

GIF with optimization

magick input.png -colors 256 output.gif

Transparent background PNG

magick input.jpg -transparent white output.png

Batch Processing

Using mogrify

Modify multiple files in-place:

Convert all JPEGs to PNG in current directory

mogrify -format png *.jpg

Resize all images in directory

mogrify -resize 800x600 *.jpg

Apply to output directory (preserves originals)

mogrify -path ./output -resize 800x600 *.jpg

Batch thumbnail generation

mogrify -path ./thumbnails -resize 275x275^ -gravity center
-crop 275x275+0+0 +repage *.jpg

Batch format conversion with quality

mogrify -path ./optimized -format jpg -quality 85 -strip *.png

Using shell loops

For more complex batch operations:

Convert with custom naming

for img in *.jpg; do magick "$img" -resize 800x600 "resized_$img" done

Multi-step processing

for img in *.jpg; do magick "$img" -resize 1920x1080^ -gravity center
-crop 1920x1080+0+0 +repage -quality 85 "processed_$img" done

Different output format

for img in *.png; do magick "$img" -quality 90 "${img%.png}.jpg" done

Image Information

Using identify

Get image metadata:

Basic info

identify image.jpg

Detailed information

identify -verbose image.jpg

Format only

identify -format "%f: %wx%h %b\n" image.jpg

Specific attributes

identify -format "%f: %wx%h, %[colorspace], %[type]\n" image.jpg

File size

identify -format "%f: %b\n" image.jpg

Multiple images

identify *.jpg

Common format strings

  • %f

  • filename

  • %w

  • width

  • %h

  • height

  • %b

  • file size

  • %[colorspace]

  • colorspace

  • %[type]

  • image type

  • %[channels]

  • number of channels

  • %[depth]

  • bit depth

Advanced Techniques

Creating Contact Sheets

Use montage:

Basic grid

montage *.jpg -geometry 200x200+2+2 contact-sheet.jpg

With labels

montage *.jpg -geometry 200x200+2+2 -label '%f' contact-sheet.jpg

Custom layout (3 columns)

montage *.jpg -tile 3x -geometry 200x200+5+5 contact-sheet.jpg

Animated GIFs

Create animations:

Create GIF from images

magick -delay 100 -loop 0 frame*.png animated.gif

Optimize GIF

magick animated.gif -fuzz 5% -layers Optimize optimized.gif

Extract frames from GIF

magick animated.gif frame_%03d.png

Complex Pipelines

Chain multiple operations:

Resize, crop, add border, adjust brightness

magick input.jpg
-resize 1000x1000^
-gravity center
-crop 1000x1000+0+0 +repage
-bordercolor black -border 5x5
-brightness-contrast 5x10
-quality 90
output.jpg

Create thumbnail with watermark

magick input.jpg
-resize 400x400^
-gravity center
-extent 400x400
( watermark.png -resize 100x100 )
-gravity southeast -geometry +10+10
-composite
output.jpg

Performance Optimization

Memory and Speed

Limit memory usage (useful for large images)

magick -limit memory 2GB -limit map 4GB input.jpg -resize 50% output.jpg

Set thread count

magick -limit thread 4 input.jpg -resize 50% output.jpg

Use streaming for large files

magick -define stream:buffer-size=0 huge.jpg -resize 50% output.jpg

Quality vs Size Trade-offs

High quality (larger file)

magick input.jpg -quality 95 output.jpg

Balanced (recommended for web)

magick input.jpg -quality 85 -strip output.jpg

Lower quality (smaller file)

magick input.jpg -quality 70 -sampling-factor 4:2:0 -strip output.jpg

Progressive JPEG (better for web)

magick input.jpg -quality 85 -interlace Plane -strip output.jpg

Common Patterns

Avatar/Profile Picture Generation

Square thumbnail from any aspect ratio

magick input.jpg -resize 200x200^ -gravity center -extent 200x200 avatar.jpg

Circular avatar (PNG with transparency)

magick input.jpg -resize 200x200^ -gravity center -extent 200x200
( +clone -threshold -1 -negate -fill white -draw "circle 100,100 100,0" )
-alpha off -compose copy_opacity -composite avatar.png

Responsive Images

Generate multiple sizes

for size in 320 640 1024 1920; do magick input.jpg -resize ${size}x -quality 85 "output-${size}w.jpg" done

Watermarking

Bottom-right watermark

magick input.jpg watermark.png -gravity southeast
-geometry +10+10 -composite output.jpg

Tiled watermark

magick input.jpg ( watermark.png -alpha set -channel A
-evaluate multiply 0.3 +channel ) -tile -composite output.jpg

Error Handling

Common issues and solutions:

File not found:

Check file exists

[ -f input.jpg ] && magick input.jpg output.png || echo "File not found"

Invalid geometry:

Validate dimensions first

identify -format "%wx%h" input.jpg

Memory errors:

Limit resources

magick -limit memory 1GB -limit map 2GB input.jpg output.png

Best Practices

  • Always use -strip to remove metadata (reduces file size)

  • Set appropriate quality (85 for JPEG is good balance)

  • Use +repage after crop to reset virtual canvas

  • Quote file paths with spaces: "my image.jpg"

  • Test on sample before batch processing

  • Backup originals when using mogrify

  • Use -auto-orient to respect EXIF orientation

  • Progressive JPEGs for web (use -interlace Plane )

  • Limit memory for large batches to prevent crashes

  • Check output after complex operations

Troubleshooting

Policy Restrictions

Some systems restrict ImageMagick operations for security:

Check policy

identify -list policy

Edit policy file (if needed)

sudo nano /etc/ImageMagick-6/policy.xml

or

sudo nano /etc/ImageMagick-7/policy.xml

Common Errors

"convert: not authorized"

  • ImageMagick security policy blocking operation

  • Edit policy.xml to allow specific formats/operations

"convert: no decode delegate"

  • Missing format support library

  • Install additional libraries (libjpeg, libpng, libwebp, etc.)

"convert: memory allocation failed"

  • Image too large or insufficient memory

  • Use -limit flags or process in smaller chunks

Resources

Command Reference Quick Guide

Format Conversion:

magick input.ext output.ext

Resize:

magick input.jpg -resize WIDTHxHEIGHT output.jpg

Crop:

magick input.jpg -crop WIDTHxHEIGHT+X+Y output.jpg

Thumbnail:

magick input.jpg -resize 100x100^ -gravity center -extent 100x100 thumb.jpg

Effects:

magick input.jpg -blur 0x8 output.jpg

Batch:

mogrify -resize 800x600 *.jpg

Info:

identify -verbose image.jpg

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

shadcn-ui

No summary provided by upstream source.

Repository SourceNeeds Review
General

gemini-document-processing

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

backend-development

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

chrome-devtools

No summary provided by upstream source.

Repository SourceNeeds Review