Terminal pogryzł człowieka: imgp
Kiedy zaczynamy opowiadać znajomym o obróbce zdjęć w terminalu narażamy się na pobłażliwe przytakiwanie. W głębi duszy każdy normalny użytkownik ma już gotową odpowiedź – „edytowanie zdjęć w trybie testowym, ach ci biedni linuksiarze”. Przelotne zaciekawienie pojawia się, gdy wspominamy o wymiarowaniu w kilka sekund zbioru 1000 fotografii za pomocą jednego polecenia. I tylko nielicznych na tyle wciągnie ten temat, że odszukają stosunkowo mało znane albo obdarzone nielichą inteligencją narzędzie imgp.
Czy masowa zmiana wymiarów zdjęć może się nam do czegoś przydać? Wystarczy przytoczyć popularny scenariusz udostępniania zdjęć znajomym lub wrzucania na konkretny serwis społecznościowy. Zamiast przepychać przez łącze 10MB – 20MB danych zdjęcia w rozdzielczości 4xxx x 3xxx, to za pomocą imgp raz dwa utworzymy prostsze do propagowania mniejsze pliki graficzne o mniejszej rozdzielczości. Co więcej, program nie obrzuci nas inwektywami jeżeli zechcemy zachować dane EXIF, przetwarzać pliki tylko powyżej jakieś objętości, robić powyższe rekursywnie, z uwzględnieniem plików ukrytych, itp. Bardzo przydatną funkcją jest adaptatywna zmiana wymiarów zdjęcia, tzn. z automatycznym doborem poziomu lub pionu jako referencyjnego parametru od której jest obliczana wartość drugiego boku. Zmiana png na jpeg? Nie ma sprawy. Optymalizacja wynikowego obrazu? To też nie stanowi problemu. Obroty według podanego kąta? Imgp z łatwością sprosta większości z naszych wymagań. Możemy nawet wymusić powiększanie mniejszych obrazów.
Owszem, może nam zabraknąć obsługi większej ilości formatów lub aplikowania innych filtrów graficznych. Niemniej czy obróbka 8823 zdjęć zajmujących 4.5GB w 8 minut nie działa na wyobraźnię? Po zmiana rozdzielczości do 1360×1000 archiwum kurczy się do 897MB co stanowi zauważalną oszczędność (o ile w taki sposób planujemy optymalizować swój podglądowy katalog zdjęć).
Lista parametrów którymi można nakarmić imgp jest stosunkowo prosta:
usage: imgp [OPTIONS] [PATH [PATH ...]] Resize, rotate JPEG and PNG images. positional arguments: PATH source file or dir [default: current dir] optional arguments: -h, --help show this help message and exit -x res, --res res output resolution in HxV or percentage -o deg, --rotate deg rotate clockwise by angle (in degrees) -a, --adapt adapt to resolution by orientation [default: off] -c, --convert convert PNG to JPG format [default: off] -d, --dot include hidden files (on Linux) [default: off] -e, --eraseexif erase exif metadata [default: off] -f, --force force to exact specified resolution [default: off] -i, --includeimgp re-process _IMGP files. * RISKY: refer to docs -k, --keep skip (but convert, if opted) images with matching specified hres or vres or --res=100 [default: off] -n, --enlarge enlarge smaller images [default: off] -p, --optimize optimize the output images [default: off] -q, --quiet operate silently [default: verbose] -r, --recursive process directories recursively [default: off] symbolic links to directories are ignored -s byte, --size byte minimum size to process an image [default: 1024] -w, --overwrite overwrite source images [default: off] -z, --debug enable debug logs [default: off]
W przypadku Ubuntu 16.04/17.04 i Minta 18.xx należy wykorzystać odpowiednie PPA aby przetestować ten program:
sudo add-apt-repository ppa:twodopeshaggy/jarun
sudo apt-get update
sudo apt-get install imgp
W przypadku Manjaro i Arch Linuksa korzystamy z AUR:
yaourt -S imgp