Imagemagick Batch Processing
Imagemagick provides powerful tools for image manipulation. These can be easily automated in small shell scripts or command lines.
Contents
Shellscript batch processing
The following examples use basename $file to not overwrite the original file. Replace it by $file to overwrite the original.
Scale a bunch of photos
This scales all .JPG files in the directory ../mypics to 2048x1536 pixels. Note that the file extension (.JPG) is case sensitive and will not match .jpg files. The aspect ratio is preserved.
for file in ../mypics/*.JPG; do echo $file; convert "$file" -scale 2048x1536 -quality 85 `basename "$file"`; done
Crop out a section of PNG files
This cuts out the upper left 6x17 pixels. +0+0 adjusts the offset. Use -depth 8 to get 8bit PNGs instead of 16bit.
for file in ../my_pngs/*.png; do echo $file; convert $file -crop 6x17+0+0! -depth 8 `basename $file`; done
... can of course be combined with -scale, here with different parameters. ! ignores the aspect ratio and ensures that the output images have the exact resolution given:
for file in ../my_pngs/*.png; do echo $file; convert $file -crop 90x45+0+13 -scale 72x36! -depth 8 `basename $file`; done
Fade in/out
A fade in and out effect for PNG sequences, easily done with -modulate:
# Fade in, 60 frames: i=0; for file in ../my_pngs/*.png; do echo $file; convert $file -modulate $(( ( $i * 100 ) / 60 )) -depth 8 $file; i=$(($i + 1)); done #Fade out, 60 frames: i=60; for file in ../my_pngs/*.png; do echo $file; convert $file -modulate $(( ( $i * 100 ) / 60 )) -depth 8 $file; i=$(($i - 1)); done
Attention: These examples overwrite the original files.