Hromadná úprava fotiek v Linuxe

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.

<br />
rename 'y/A-Z/a-z/' *.JPG<br />

Ak sa rename nenachádza vo vašej distribúcii, tak môžete použiť nasledujúci univerználnejší for cyklus:

<br />
for i in *.JPG; do mv $i `echo $i | tr [:upper:] [:lower:]`; done<br />

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:

<br />
IFS='<br />
'<br />

A potom stačí použiť môj skript rename.sh na kompletnú zmenu názvu (so zachovaním prípony).

<br />
#!/bin/bash</p>
<p>IFS=&quot;<br />
&quot;</p>
<p>if [ -z &quot;$1&quot; -o -n &quot;$3&quot; ]; then<br />
	echo &quot;Usage $0 &lt;file_mask&gt; [name_prefix]&quot;;<br />
	exit;<br />
fi</p>
<p>COUNT=0;</p>
<p>ls -1 $1 | while read IN; do<br />
	let COUNT++;<br />
	mv &quot;$IN&quot; &quot;$2`printf &quot;%3d&quot; $COUNT | tr ' ' '0'; echo $IN | sed &quot;s/.*\./\./&quot;`&quot;;<br />
done<br />

Potom ho už len spustiť:

<br />
./rename.sh *.jpg nieco_<br />

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.

<br />
for i in *.jpg; do convert -geometry 800x600 $i 800x600/$i; echo -n .; done<br />

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:

<br />
for i in *.jpg; do convert -geometry 800x600 $i $i; echo -n .; done<br />

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.

<br />
for i in *.jpg; do composite -gravity SouthEast /cesta/k/logu/logo.png $i $i; echo -n .; done<br />

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 ;).

6 komentárov k “Hromadná úprava fotiek v Linuxe”

  1. oprav si chybu …pomocou perl skripty rename… spravne je skriptu
    teda za prdpokladu ze je ten skript a nie ta skripta(ta parka :D) ;)

  2. Alebo si cez WINE postit nejaky normalny windowsacky graficky program, ktory to urobi elegantne bez vypisovania hakov-bakov. Napriklad XNVIEW.

    Mam velmi rad Linux, pouzivam ho denne ale linuxove programy, to je podla mna zufalstvo na druhu.

  3. Preco by malo byt pouzivanie prikazoveho riadku zufalstvo ? Pre mna je to ovela pohodlnejsie a efektivnejsie ako akykolvek graficky program a nie to este program cez WINE… To skor to je zufalstvo ;)

  4. Phatch PHoto Batch – pekne GUI a vie robit davkove zalezitosti aj vratane podadresarov a vystup (napr upravene obrazky) vie umiestnit v ekvivalentom strome podla povodneho hoci aj s premenovanymi nazvami.. Uzitocny tool aj bez skriptovania – pouzivam na Ubuntu.

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *