Hurtowe acz selektywne skalowanie zdjęć

Hurtowe skalowanie zdjęć z konsoli to pikuś – convert albo mogrify z pakietu ImageMagick nadaje się do tego bardzo dobrze. Dzisiaj musiałem sobie poradzić z nieco bardziej skomplikowanym przypadkiem. Otóż w drzewiastej strukturze katalogów miałem kilka tysięcy zdjęć, a w każdym z podkatalogów znajdowały się kopie danego zdjęcia w kilku rozmiarach. Przykład:

katalog/12/345.jpg
katalog/12/345d.jpg
katalog/12/345m.jpg
katalog/12/345s.jpg
katalog/12/346.jpg
katalog/12/346d.jpg
katalog/12/346m.jpg
katalog/12/346s.jpg

Utrudnienie polegało na tym, że chciałem zmienić rozmiar tylko zdjęć z przyrostkiem „m” (małe) wykorzystując do tego zdjęcia bez przyrostka (oryginały), tzn. dla uzyskania jak najlepszej jakości zmniejszyć oryginały.

O ile wyłuskanie oryginałów przez find nie sprawiło mi problemów, o tyle zapisanie pomniejszonej kopii pliku pod nazwą z przyrostkiem nie było dla mnie takie oczywiste. Po kilku minutach lektury podręcznika polecenia convert udało mi się osiągnąć cel dzięki takiemu poleceniu:

find katalog/ze/zdjeciami/ -type f -regex '.*/[0-9]+.jpg' -exec convert {} -resize 640x640 -set filename:f '%d/%[base]m.%e' '%[filename:f]' ;

Zapisuję je przyszły użytek mój i potomnych.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *