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.