ImageMagick – Command Line Image Manipulation Tool
Complete Guide to ImageMagick: Powerful Command Line Image Processing
ImageMagick has served as the cornerstone of command-line image processing for over three decades, providing comprehensive tools for creating, editing, composing, and converting images. Supporting over 200 image formats, ImageMagick enables transformations that range from simple resizing to complex artistic effects. Its scriptable nature makes it essential for automated workflows, batch processing, and server-side image manipulation.
The suite includes several command-line tools: convert for transformations, identify for image information, mogrify for in-place modifications, composite for layering images, and montage for creating image collections. This modular approach provides flexibility for both simple tasks and complex processing pipelines.
Installing ImageMagick
# Ubuntu/Debian
sudo apt update
sudo apt install imagemagick
# Fedora
sudo dnf install ImageMagick
# Arch Linux
sudo pacman -S imagemagick
# macOS
brew install imagemagick
# Windows
choco install imagemagick
winget install ImageMagick.ImageMagick
# Verify installation
magick --version
convert --version
# Note: ImageMagick 7 uses 'magick' command
# ImageMagick 6 uses 'convert', 'identify', etc.
Basic Operations
# Convert format
magick input.png output.jpg
convert input.png output.jpg # IM6
# Resize image
magick input.jpg -resize 800x600 output.jpg
magick input.jpg -resize 50% output.jpg
magick input.jpg -resize 800x600! output.jpg # Force exact dimensions
magick input.jpg -resize 800x600^ -gravity center -extent 800x600 output.jpg
# Thumbnail with aspect ratio
magick input.jpg -thumbnail 200x200 thumb.jpg
# Quality setting (JPEG)
magick input.png -quality 85 output.jpg
# Get image info
magick identify input.jpg
magick identify -verbose input.jpg
# Get specific properties
magick identify -format "%wx%h" input.jpg
magick identify -format "%[EXIF:*]" input.jpg
Image Transformations
# Rotate
magick input.jpg -rotate 90 output.jpg
magick input.jpg -rotate -45 output.jpg
# Flip and flop
magick input.jpg -flip output.jpg # Vertical
magick input.jpg -flop output.jpg # Horizontal
# Crop
magick input.jpg -crop 640x480+100+50 output.jpg
# width x height + x_offset + y_offset
# Auto-crop (remove borders)
magick input.jpg -trim output.jpg
magick input.jpg -trim +repage output.jpg
# Add border
magick input.jpg -border 10 -bordercolor black output.jpg
# Add padding
magick input.jpg -gravity center -background white -extent 800x600 output.jpg
# Shave edges
magick input.jpg -shave 20x20 output.jpg
Color Adjustments
# Convert to grayscale
magick input.jpg -colorspace Gray output.jpg
# Adjust brightness/contrast
magick input.jpg -brightness-contrast 10x5 output.jpg
# Modulate (brightness, saturation, hue)
magick input.jpg -modulate 110,120,100 output.jpg
# Negate (invert colors)
magick input.jpg -negate output.jpg
# Colorize
magick input.jpg -colorize 30,0,0 output.jpg # Add red tint
# Sepia tone
magick input.jpg -sepia-tone 80% output.jpg
# Normalize (stretch histogram)
magick input.jpg -normalize output.jpg
# Auto-level
magick input.jpg -auto-level output.jpg
# Posterize
magick input.jpg -posterize 4 output.jpg
# Change color depth
magick input.jpg -depth 8 output.jpg
Effects and Filters
# Blur
magick input.jpg -blur 0x8 output.jpg
# Gaussian blur
magick input.jpg -gaussian-blur 0x3 output.jpg
# Sharpen
magick input.jpg -sharpen 0x1 output.jpg
magick input.jpg -unsharp 0x1 output.jpg
# Edge detection
magick input.jpg -edge 1 output.jpg
magick input.jpg -canny 0x1+10%+30% output.jpg
# Emboss
magick input.jpg -emboss 1 output.jpg
# Oil paint effect
magick input.jpg -paint 4 output.jpg
# Charcoal sketch
magick input.jpg -charcoal 2 output.jpg
# Noise reduction
magick input.jpg -enhance output.jpg
magick input.jpg -despeckle output.jpg
# Add noise
magick input.jpg -noise 5 output.jpg
# Vignette
magick input.jpg -vignette 0x150 output.jpg
# Motion blur
magick input.jpg -motion-blur 0x12+45 output.jpg
# Radial blur
magick input.jpg -radial-blur 10 output.jpg
Text and Annotations
# Add text
magick input.jpg -gravity south -fill white -pointsize 24 \
-annotate +0+10 'Copyright 2024' output.jpg
# Text with background
magick input.jpg \
-fill black -draw "rectangle 0,0 200,30" \
-fill white -pointsize 16 -annotate +10+20 'Label' \
output.jpg
# Custom font
magick input.jpg -font Arial -pointsize 36 \
-fill white -annotate +50+50 'Hello' output.jpg
# Text with outline
magick input.jpg -font Arial -pointsize 48 \
-stroke black -strokewidth 2 -fill white \
-gravity center -annotate +0+0 'Text' output.jpg
# Draw shapes
magick input.jpg -fill none -stroke red -strokewidth 2 \
-draw "rectangle 50,50 200,200" output.jpg
magick input.jpg -fill blue -draw "circle 100,100 150,100" output.jpg
# Draw line
magick input.jpg -stroke red -strokewidth 3 \
-draw "line 0,0 100,100" output.jpg
Compositing and Overlays
# Overlay watermark
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
# Blend images
magick input1.jpg input2.jpg -compose blend \
-define compose:args=50 -composite output.jpg
# Multiply blend
magick input.jpg overlay.png -compose multiply -composite output.jpg
# Screen blend
magick input.jpg overlay.png -compose screen -composite output.jpg
# Tile pattern
magick -size 800x600 tile:pattern.png output.jpg
# Create gradient background
magick -size 800x600 gradient:blue-white output.jpg
magick -size 800x600 radial-gradient:white-black output.jpg
Batch Processing
# Convert all PNGs to JPG
magick mogrify -format jpg *.png
# Resize all images in directory
magick mogrify -resize 800x600 *.jpg
# Process with specific output directory
magick mogrify -path output/ -resize 50% *.jpg
# Create thumbnails
for f in *.jpg; do
magick "$f" -thumbnail 200x200 "thumb_$f"
done
# Batch process with quality
find . -name "*.png" -exec magick {} -quality 85 {}.jpg \;
# Parallel processing
ls *.png | parallel -j4 magick {} -resize 800x600 resized/{}
# Create contact sheet
magick montage *.jpg -geometry 200x200+5+5 -tile 4x contact.jpg
Creating Images
# Solid color
magick -size 800x600 xc:blue output.jpg
magick -size 800x600 xc:'#FF5733' output.jpg
# Transparent background
magick -size 800x600 xc:transparent output.png
# Gradient
magick -size 800x600 gradient:'#FF5733-#3498DB' output.jpg
# Pattern
magick -size 100x100 pattern:checkerboard output.png
# Plasma (random)
magick -size 800x600 plasma: output.jpg
# Create favicon
magick logo.png -define icon:auto-resize=64,48,32,16 favicon.ico
# Create animated GIF
magick -delay 100 frame*.png animation.gif
magick -delay 50 -loop 0 *.jpg animation.gif
GIF and Animation
# Create GIF from images
magick -delay 100 -loop 0 frame1.png frame2.png frame3.png animation.gif
# Optimize GIF
magick animation.gif -layers optimize optimized.gif
# Extract GIF frames
magick animation.gif frame_%03d.png
# Resize GIF
magick animation.gif -coalesce -resize 50% -layers optimize output.gif
# Change GIF speed
magick animation.gif -delay 50 faster.gif
# Add frame to GIF
magick animation.gif newframe.png -layers optimize output.gif
# Reverse GIF
magick animation.gif -reverse reversed.gif
PDF Operations
# Convert PDF to images
magick -density 300 document.pdf page_%03d.png
# Specific page
magick -density 300 document.pdf[0] first_page.png
# Images to PDF
magick *.jpg document.pdf
# PDF page size
magick *.jpg -page A4 document.pdf
# Compress PDF images
magick -density 150 input.pdf -quality 85 output.pdf
Format-Specific Options
# JPEG quality
magick input.png -quality 85 output.jpg
# PNG compression
magick input.jpg -define png:compression-level=9 output.png
# WebP conversion
magick input.jpg -quality 80 output.webp
# AVIF conversion
magick input.jpg output.avif
# TIFF with compression
magick input.jpg -compress lzw output.tiff
# ICO favicon
magick logo.png -define icon:auto-resize=256,128,64,48,32,16 favicon.ico
# Remove metadata
magick input.jpg -strip output.jpg
# Preserve metadata
magick input.jpg -profile "*" output.jpg
Advanced Techniques
# Create rounded corners
magick input.jpg \
\( +clone -alpha extract \
-draw 'fill black polygon 0,0 0,15 15,0 fill white circle 15,15 15,0' \
\( +clone -flip \) -compose Multiply -composite \
\( +clone -flop \) -compose Multiply -composite \
\) -alpha off -compose CopyOpacity -composite output.png
# Drop shadow
magick input.png \( +clone -background black -shadow 60x5+5+5 \) \
+swap -background none -layers merge +repage output.png
# Reflection effect
magick input.png \( +clone -flip -alpha on \
-channel A -evaluate multiply 0.5 \) -append output.png
# Polaroid effect
magick input.jpg -bordercolor white -border 10 \
-bordercolor grey -border 1 \
-background none -rotate 6 -shadow 60x4+4+4 \
output.png
# Color replacement
magick input.jpg -fuzz 20% -fill red -opaque blue output.jpg
Troubleshooting
# Check supported formats
magick -list format
# Check delegates
magick -list delegate
# Memory limits
magick -limit memory 2GB -limit map 4GB input.jpg output.jpg
# Security policy (if getting errors)
# Edit /etc/ImageMagick-*/policy.xml
# Increase limits or enable formats
# Verbose output
magick -verbose input.jpg output.jpg
# Debug
magick -debug all input.jpg output.jpg
Conclusion
ImageMagick provides unmatched flexibility for command-line image processing, enabling everything from simple conversions to complex artistic transformations. Its scriptable interface makes it ideal for automation, while the extensive command options support virtually any image manipulation requirement. Understanding ImageMagick’s capabilities enables efficient batch processing and integration into larger workflows.
Download Options
Download ImageMagick – Command Line Image Manipulation Tool
Version 7.1.1
File Size: 20 MB
Download NowSafe & Secure
Verified and scanned for viruses
Regular Updates
Always get the latest version
24/7 Support
Help available when you need it