2009-02-06

Greitas nuotraukų sumažinimas Linux konsolėje

Jau gan senokai naudoju savo paties pasirašytą Linux konsolės skriptą. Jo paskirtis sumažinti nuotraukų ar kitų *.html paveikslėlių dydį taip, kad paveikslėlis tilptų į monitoriaus rėmus (mano atveju 1280x1024). Esmė ta, kad fotografuotos nuotraukos labai daug užima (4 - 6MB), sumažinus jas iki kelių šimtų KB, tas pačias nuotraukas žymiai lengviau jas perkelti į interneto tarnybas, be to su jomis žymiai lengviau susitvarko peržiūros programos. O pats lengviausias būdas sumažinti nuotraukos užimamą vietą, tai sumažinti jos dydį.

Pats skriptas atrodo taip:

#!/bin/bash
for file in *.jpg;
do
resolution=$(identify $file | awk '{ print $3}');
width=$(echo $resolution | awk -F"x" '{print $1}');
height=$(echo $resolution | awk -F"x" '{print $2}');
if [ "$width" -gt "1280" ] || [ "$height" -gt "1024" ]; then
if [ "$width" -ge "$height" ]; then
convert $file -resize 1280x "resized-$file";
else
convert $file -resize x1024 "resized-$file";
fi
echo "$file $width x $height";
# rm "$file";
fi
done
 
Patį skriptą nukopijuokite į tuščią tekstinį failą. Galite jį pavadinti „convertphoto“ pavadinimu. Tada suteikite vykdomąsias teises failui „chmod +x convertphoto“. Ir kad būtų paprasčiau naudotis, galite jį perkelti į /usr/bin katalogą. Tada tereikės pereiti konsolėje į nuotraukos katalogą ir paleisti „convertphoto“ komandą.

Jei norite, kad senosios nuotraukos būtų ištrintos, atkomentuokite „rm "$file";“.
Jei nepatinka būsimi nustatyti nuotraukų dydžiai, skripte visus skaičiukus vietoje 1280 ir 1024 pasikeiskite savais.

Beje skriptui yra būtinas ImageMagick programų rinkinys, bet šis ko gero standartiškai būna visose Linux distribucijose. Bet jei nebūtų susiinstaliuokite.

3 komentarai:

  1. Mano nuomone, awk čia panaudoti galima tik kartą, o echo iš viso kaip ir nereikalingas (tik dėl vaizdo...). :) Papildomas kodas.

    Kitas dalykas - geriau nenaudoti visų *jpg failų kataloge. Tam visada reikės sukurti tuščią katalogą ir į jį perkelti nuotraukas, kurias ir tik jas norėsi redaguoti.

    Tiesa, kabliataškiai įprastai naudojami tik komandinėje eilutėje, bet ne failuose :) .

    http://pastebin.com/f559cb297

    AtsakytiPanaikinti
  2. Kas dėl ;, tai dažnai naudojama if [ COND ]; then. ;-)

    AtsakytiPanaikinti
  3. Tai ir sakau, jog įprastai, bet ne visada ;) .

    AtsakytiPanaikinti