ImageMagick Image Conversion

Basic Conversion

Convert Format

1# Simple conversion
2convert input.png output.jpg
3
4# Multiple files
5convert input1.png input2.png input3.png output.pdf
6
7# Specify quality
8convert input.png -quality 90 output.jpg

Common Formats

 1# PNG to JPG
 2convert image.png image.jpg
 3
 4# JPG to PNG
 5convert image.jpg image.png
 6
 7# Any to WebP
 8convert image.jpg -quality 80 image.webp
 9
10# SVG to PNG (rasterize)
11convert -density 300 image.svg image.png
12
13# PDF to images (one per page)
14convert -density 150 document.pdf page-%03d.png

Quality & Compression

JPEG Quality

 1# High quality (90-100)
 2convert input.png -quality 95 output.jpg
 3
 4# Medium quality (75-90)
 5convert input.png -quality 85 output.jpg
 6
 7# Low quality (60-75)
 8convert input.png -quality 70 output.jpg
 9
10# Progressive JPEG
11convert input.png -quality 85 -interlace Plane output.jpg

PNG Compression

1# Maximum compression (slow)
2convert input.png -quality 95 -define png:compression-level=9 output.png
3
4# Fast compression
5convert input.png -quality 95 -define png:compression-level=1 output.png
6
7# 8-bit PNG (smaller file)
8convert input.png -colors 256 output.png

WebP

1# Lossy WebP
2convert input.jpg -quality 80 output.webp
3
4# Lossless WebP
5convert input.png -define webp:lossless=true output.webp
6
7# With alpha channel
8convert input.png -quality 80 -define webp:alpha-quality=100 output.webp

Resizing & Scaling

Resize by Dimensions

 1# Exact size (may distort)
 2convert input.jpg -resize 800x600! output.jpg
 3
 4# Fit within dimensions (maintain aspect ratio)
 5convert input.jpg -resize 800x600 output.jpg
 6
 7# Resize width only
 8convert input.jpg -resize 800x output.jpg
 9
10# Resize height only
11convert input.jpg -resize x600 output.jpg
12
13# Resize by percentage
14convert input.jpg -resize 50% output.jpg

Thumbnails

 1# Create thumbnail (max 200x200)
 2convert input.jpg -thumbnail 200x200 thumb.jpg
 3
 4# Square thumbnail (crop to center)
 5convert input.jpg -thumbnail 200x200^ -gravity center -extent 200x200 thumb.jpg
 6
 7# Multiple thumbnails
 8convert input.jpg -thumbnail 100x100 small.jpg \
 9                  -thumbnail 200x200 medium.jpg \
10                  -thumbnail 400x400 large.jpg

Sampling & Filtering

1# High-quality resize (Lanczos)
2convert input.jpg -filter Lanczos -resize 800x600 output.jpg
3
4# Fast resize (Point)
5convert input.jpg -filter Point -resize 800x600 output.jpg
6
7# Sharpen after resize
8convert input.jpg -resize 800x600 -sharpen 0x1 output.jpg

Cropping

Crop by Dimensions

1# Crop 800x600 from top-left
2convert input.jpg -crop 800x600+0+0 output.jpg
3
4# Crop from center
5convert input.jpg -gravity center -crop 800x600+0+0 output.jpg
6
7# Crop and remove canvas
8convert input.jpg -crop 800x600+100+100 +repage output.jpg

Auto-Crop

1# Remove white borders
2convert input.jpg -fuzz 10% -trim +repage output.jpg
3
4# Remove black borders
5convert input.jpg -bordercolor black -border 1x1 -fuzz 10% -trim +repage output.jpg

Aspect Ratio Crop

1# Crop to 16:9
2convert input.jpg -gravity center -crop 16:9 +repage output.jpg
3
4# Crop to square
5convert input.jpg -gravity center -crop 1:1 +repage output.jpg

Color Operations

Adjust Brightness/Contrast

1# Increase brightness
2convert input.jpg -modulate 120,100,100 output.jpg
3
4# Increase contrast
5convert input.jpg -contrast output.jpg
6
7# Brightness and contrast
8convert input.jpg -brightness-contrast 10x20 output.jpg

Color Adjustments

 1# Grayscale
 2convert input.jpg -colorspace Gray output.jpg
 3
 4# Sepia
 5convert input.jpg -sepia-tone 80% output.jpg
 6
 7# Adjust saturation
 8convert input.jpg -modulate 100,150,100 output.jpg
 9
10# Adjust hue
11convert input.jpg -modulate 100,100,120 output.jpg

Color Space Conversion

1# RGB to CMYK
2convert input.jpg -colorspace CMYK output.jpg
3
4# sRGB to Linear RGB
5convert input.jpg -colorspace RGB output.jpg
6
7# Apply ICC profile
8convert input.jpg -profile sRGB.icc -profile AdobeRGB.icc output.jpg

Transparency & Alpha

Add/Remove Alpha Channel

1# Add alpha channel
2convert input.jpg -alpha on output.png
3
4# Remove alpha (flatten to white)
5convert input.png -background white -alpha remove output.jpg
6
7# Flatten to specific color
8convert input.png -background "#FF0000" -alpha remove output.jpg

Make Color Transparent

1# Make white transparent
2convert input.jpg -transparent white output.png
3
4# Make color range transparent (with fuzz)
5convert input.jpg -fuzz 10% -transparent white output.png

Alpha Operations

1# Extract alpha channel
2convert input.png -alpha extract alpha.png
3
4# Apply alpha mask
5convert input.jpg mask.png -compose CopyOpacity -composite output.png

Batch Processing

Process Multiple Files

 1# Convert all JPGs to PNG
 2mogrify -format png *.jpg
 3
 4# Resize all images in directory
 5mogrify -resize 800x600 *.jpg
 6
 7# Process with new names
 8for file in *.jpg; do
 9    convert "$file" -resize 800x600 "resized_$file"
10done

Batch with Different Operations

1# Resize and convert
2for file in *.png; do
3    convert "$file" -resize 800x600 -quality 90 "${file%.png}.jpg"
4done
5
6# Create thumbnails
7for file in *.jpg; do
8    convert "$file" -thumbnail 200x200 "thumb_$file"
9done

Image Information

Get Image Info

 1# Basic info
 2identify image.jpg
 3
 4# Detailed info
 5identify -verbose image.jpg
 6
 7# Just dimensions
 8identify -format "%wx%h" image.jpg
 9
10# File size
11identify -format "%b" image.jpg

Advanced Operations

Composite Images

1# Overlay image
2convert background.jpg overlay.png -gravity center -composite output.jpg
3
4# Blend two images
5convert image1.jpg image2.jpg -blend 50x50 output.jpg

Add Border

1# Simple border
2convert input.jpg -border 10x10 -bordercolor black output.jpg
3
4# Frame effect
5convert input.jpg -mattecolor "#FF0000" -frame 10x10+5+5 output.jpg

Rotate & Flip

 1# Rotate 90 degrees
 2convert input.jpg -rotate 90 output.jpg
 3
 4# Flip horizontal
 5convert input.jpg -flop output.jpg
 6
 7# Flip vertical
 8convert input.jpg -flip output.jpg
 9
10# Auto-orient based on EXIF
11convert input.jpg -auto-orient output.jpg

Optimization

Optimize File Size

1# Strip metadata
2convert input.jpg -strip output.jpg
3
4# Optimize PNG
5convert input.png -strip -define png:compression-level=9 output.png
6
7# Optimize JPEG
8convert input.jpg -strip -quality 85 -sampling-factor 4:2:0 output.jpg

Progressive Images

1# Progressive JPEG
2convert input.jpg -interlace Plane output.jpg
3
4# Progressive PNG
5convert input.png -interlace PNG output.png

Quick Reference

TaskCommand
Convert formatconvert input.png output.jpg
Resizeconvert input.jpg -resize 800x600 output.jpg
Thumbnailconvert input.jpg -thumbnail 200x200 thumb.jpg
Cropconvert input.jpg -crop 800x600+0+0 output.jpg
Grayscaleconvert input.jpg -colorspace Gray output.jpg
Qualityconvert input.png -quality 90 output.jpg
Strip metadataconvert input.jpg -strip output.jpg
Batch resizemogrify -resize 800x600 *.jpg

Tips

  • Use -quality 85-90 for JPEGs (good balance)
  • Use -strip to remove metadata and reduce file size
  • Use -thumbnail instead of -resize for small images (faster)
  • Use mogrify for in-place batch processing
  • Use -sampling-factor 4:2:0 for smaller JPEGs
  • Add -interlace Plane for progressive JPEGs (better web loading)
  • Use -filter Lanczos for high-quality resizing
  • Always use +repage after cropping to remove canvas info

Related Snippets