Hurtowa konwersja zdjęć


Image magick dostarcza cały zestaw konsolowych programów przydatnych do obróbki zdjęć. Dziś zaszła potrzeba przerobienia całej masy fotek z kilkunastu katalogów. Chciałem przeskalować zdjęcia do rozmiaru 400×400 i zachować oryginalne źródła, więc posłużyłem się programem convert.

Aby przerobić zdjęcia jpg z bieżącego katalogu i wrzucić je do podkatalogu thumbs wystarczy jedna linijka w terminalu:

for i in `ls *.jpg`; do convert -resize 400x400 -quality 85 $i thumbs/$i; done

Jeśli obrazek jest mniejszy niż 400×400, to zostanie powiększony zachowując proporcje tak aby zmieścił się w kwadracie o boku 400. Aby nie powiększać mniejszych obrazków należy użyć opcji ‚>’ (szczegóły tutaj).

W moim przypadku zdjęcia były pogrupowane datami. Katalog źródłowy zawierał podkatalogi (nazwa podkatalogu była datą, np „2008-12-13”) w których dopiero były właściwe zdjęcia. Chciałem zachować grupowanie. Aby wykonać kopię danych zawierającą również takie same podkatalogi napisałem prosty skrypt:

#!/bin/bash
SOURCEDIR=/katalog/zrodlowy/
DESTDIR=/katalog/docelowy/
cd $SOURCEDIR
for k in `ls -l | egrep '^d'|awk '{print $8}'`; do
	echo "katalog: $k"
	cd $k
	mkdir $DESTDIR$k
	for i in `ls *.jpg 2>/dev/null`; do
		convert -resize 400x400 -quality 85 $i $DESTDIR$k/$i;
	done
	cd ..
done

Pierwsza linijka for zawiera fragment, który służy do otrzymania listy samych podkatalogów. Dzięki temu tylko podkatalogi są konwertowane, a pliki z głównego katalogu pomijane. Mała uwaga: program niestety nie sprawdza się w przypadku gdy nazwy zawierają spacje.

Aby automatycznie obrócić zdjęcia na podstawie danych EXIF należy do convert dodać opcję -auto-orient

, , , , , , ,

Komentarze nie są dozwolone.