Képátméretezés egyszerűen
Készítettem egy Nautilus-scripet az asszony kérésére.
Feladat: képek tömeges átméretezése.
Számomra az volt a legegyszerűbb, ha egy könyvtárban lévő fájlokat méretezek át. Mivel kevés időm volt, így nem a legelegánsabb a script, de így is egész elfogadható lett a végeredmény. Több lehetőség közül lehet választani, százalékos, magasság alapján illetve szélesség alapján lehet szabályozni a végleges kép méretét. Sajnos van ismert hibája! Mivel a for ciklusnál a szóköz gondot okoz, így @-ra cseréli, majd a végén vissza. Magyarán, nem kezeli a fájlnévben a @ jelet! Cserében ódafigyeltem arra, hogy a könyvtárnévben és a fájlnévben lehet szóköz.
# /bin/bash
ellenorzes=`file "$1"|grep directory`
if [ -z $ellenorzes ]
then zenity --info --text="Ez nem könyvtár\!"
exit
fi
# képeknek új könyvtár létrehozása
mkdir "$1_scaled"
# választó menü
valasz=`zenity --list --radiolist --title="Átméretező" --text="Kérem válasz átméretezési tipust" --hide-column=2 --width 300 --height 200 --column="Választás" --column="ID" --column="Átméretezés tipusa:" true 1 "Százalékos" true 2 "Magasság szerint" true 3 "Szélesség szerint"`
# átméretezés magasság szerint
if [ $valasz -eq 2 ]
then
magassag=`zenity --entry --text="Add meg a kép magasságát" --title="Átméretező"`
for kepek in `ls -1 "$1"|tr " " "@"`
do
kep=`echo $kepek|tr "@" " "`
convert -resize 10x$magassag^ -quality 85 "./$1/$kep" "./$1_scaled/$kep"
done
zenity --info --text="Elkészült képek a $1_scaled könyvtárban találahtók\!"
exit
fi
# átméretezés szélesség szerint
if [ $valasz -eq 3 ]
then
szelesseg=`zenity --entry --text="Add meg a kép szélességét" --title="Átméretező"`
for kepek in `ls -1 "$1"|tr " " "@"`
do
kep=`echo $kepek|tr "@" " "`
convert -resize $szelessegx$szelesseg\> -quality 85 "./$1/$kep" "./$1_scaled/$kep"
done
zenity --info --text="Elkészült képek a $1_scaled könyvtárban találahtók\!"
exit
fi
# átméretezés százalék szerint
if [ $valasz -eq 1 ]
then
szazalek=`zenity --entry --text="Add meg hány százalékára változzon a kép" --title="Átméretező"`
for kepek in `ls -1 "$1"|tr " " "@"`
do
kep=`echo $kepek|tr "@" " "`
convert -resize $szazalek% -quality 85 "./$1/$kep" "./$1_scaled/$kep"
done
zenity --info --text="Elkészült képek a $1_scaled könyvtárban találahtók\!"
exit
fi
Ha valaki talál hasonlóan praktikus, bármilyen más célt szolgáló scriptet, kérem hozzászólásban ossza meg velem, mert nehéz jó scripteket találni.
U.i.: Most látom, hogy az első próbát illesztettem be és nem a kész scriptet, javítottam!