Dnes vám ukážem pár mini skriptov, ktoré používam na úpravu väčšieho množstva fotiek. Ak ich budete chcieť taktiež použiť, tak budete potrebovať shell a výborný balik pre prácu s obrázkami imagemagick.
Hromadné premenovanie súborov
Predstavte si, že máte veľa fotiek s názvami DSC_1234.JPG, DSC_1235.JPG,… A chcete ich premenovať na nieco_0001.jpg, nieco_0002.jpg,… Na to som si včera napísal jednoduchý skript.
Najprv zmeníme všetky znaky v názve z veľkých na malé, pomocou perl skriptu rename
, ktorý sa nachádza napríklad v distribúcii Debian.
rename 'y/A-Z/a-z/' *.JPG
Ak sa rename nenachádza vo vašej distribúcii, tak môžete použiť nasledujúci univerználnejší for
cyklus:
for i in *.JPG; do mv $i `echo $i | tr [:upper:] [:lower:]`; done
pozn. aby ste mali istotu, ze for cyklus korektne spracuje aj súbory, ktoré majú v názve medzeru tak predtým nastavte premennú IFS na nový riadok:
IFS=' '
A potom stačí použiť môj skript rename.sh
na kompletnú zmenu názvu (so zachovaním prípony).
#!/bin/bash IFS=" " if [ -z "$1" -o -n "$3" ]; then echo "Usage $0 <file_mask> [name_prefix]"; exit; fi COUNT=0; ls -1 $1 | while read IN; do let COUNT++; mv "$IN" "$2`printf "%3d" $COUNT | tr ' ' '0'; echo $IN | sed "s/.*\./\./"`"; done
Potom ho už len spustiť:
./rename.sh *.jpg nieco_
A výsledné súbory budú premenované na nieco_0001.jpg, nieco0002.jpg,… Ak by sme predtým nezmenšili všetky znaky na malé, tak by názvy mali tvar, nieco_0001.JPG, keďže skript zachováva príponu súboru.
Hromadné zmenšovanie obrázkov
Na hromadné zmenšovanie obrázkov nám zas postačí jeden for
cyklus a program convert z už spomínaného balíku imagemagick.
Nasledujúci for
cyklus zmenší (poprípade ak by boli obrázky menšie, tak zväčší) všetky obrázky s príponou .jpg v aktuálnom adresári na rozlíšenie 800×600.
for i in *.jpg; do convert -geometry 800x600 $i 800x600/$i; echo -n .; done
Obrázky budú ukladané do podadresára 800×600, ktorý musí existovať. Ak by ste chceli zmeniť originálne obrázky tak len vyhodíte 800×600/ z cyklu:
for i in *.jpg; do convert -geometry 800x600 $i $i; echo -n .; done
Prídávanie loga k obrázkom
Prídávanie loga je opäť ako ináč veľmi jednoduché a použijeme na to program composite z balíka imagemagick.
for i in *.jpg; do composite -gravity SouthEast /cesta/k/logu/logo.png $i $i; echo -n .; done
Daný for
cyklus pridá logo do pravého spodného rohu každého .jpg obrázku v aktuálnom adresári.
Záver
Ako ste mohli vidieť, hromadná práca s obrázkami je v Linuxe veľmi jednoduchá a nepotrebujete na ňu žiadne špeciálne grafické programy, stačí ovládať základy shell skriptovanie, alebo si prečítať tento článok ;).
Pridaj komentár