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.

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

6 názorov na “Hromadná úprava fotiek v Linuxe

  1. daboss

    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. rs

    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. head Autor

    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. lolo77

    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é *

Môžete použiť tieto HTML značky a atribúty: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>