Wykorzystując pakiet do obróbki grafiki o nazwie ImageMagick, możemy masowa edytować oraz tworzyć pliki graficzne. Z funkcji ImageMagick można korzystać z wiersza poleceń dlatego bardzo chętnie jest on wykorzystywany w językach skryptowych. Poprzez specjalne API dostępny jest również dla takich języków jak Perl, C, C++, Python oraz PHP.

Przed przystąpieniem do skalowania obrazków, zmienimy ich nazwy na małe literki. Do tego celu posłuży nam polecenie tr, które zostało opisane w artykule Masowa zmiana nazw plików pisanych WIELKIMI literami na małe. Wykorzystując jedną ze znanych nam metod przystępujemy do zmiany nazw plików:

# Change big characters to small
for name in *.JPG
do
	mv -f $name `echo $name | tr -d _ | tr '[A-Z]' '[a-z]'`
done

Kolejnym krokiem będzie odszukanie plików JPG oraz policzenie ich ilości wykorzystując polecenie find. Do policzenia ilości plików można wykorzystać również polecenie wc.

# Find and count number of image files
files=(`find . -maxdepth 1 -iregex ".*\.jpg$" -type f -print | sort -f`)

Znając liczbę plików z jaką będziemy pracować, możemy zapamiętać ich nazwy w tablicy filenames.

# Remember file names into a $filenames
for (( i=0; i < ${#files[@]}; i++ ));
do
	filenames[$i]=`basename "${files[$i]}" | sed s/\ /_/g`;
done

Ostatnim krokiem będzie samo skalowanie. Do tego posłuży nam polecenie convert z pakietu ImageMagick. Dodatkowo będziemy wyświetlać sobie postęp prac poleceniem echo.

# Configuration:
size="2048x2048" #Size of images

for (( i=0; i < ${#filenames[@]}; i++ ));
do
	echo -e "Resizing ${filenames[$i]}\t\t[`expr $i + 1`/${#filenames[@]}]"
	convert -scale $size ${filenames[$i]} min/${filenames[$i]}
done

Skrypt możemy wzbogacić o automatyczne obracanie zdjęć z aparatu lub zmianę nazw plików na datę zrobienia zdjęcia. Więcej na ten temat można przeczytać w artykule Exif, czyli ukryte dane w obrazkach. Wynikiem programu będzie:

paszczak000@muszelka:~/Pulpit/Flickr$ ./scale_image.sh 
Resizing dsc3508.jpg		[1/5]
Resizing dsc3512.jpg		[2/5]
Resizing dsc3554.jpg		[3/5]
Resizing dsc3555.jpg		[4/5]
Resizing dsc3586.jpg		[5/5]

Pełen skrypt dostępny jest w pliku scale_image.sh.