[rešeno] Skripta za resize slik

Sem našel eno skripto s katero naj bi slike pomanjšal na željeno velikost.
Ker večkrat pomanjšam slike bi mi ena taka skripta res prav prišla, da naredim vse z enim klikom.
Problem je, da ne pomanjša kot bi jaz želel.
evo skripta

#!/bin/bash
echo "This will resize all jpg images in the current directory to 640x480 (or 480x640, as appropriate), an optional paramter will be prefixed to result files."
for i in *.JPG ;
do
SIZEX=$(identify $i | egrep -o '[0-9]+x' | egrep -o '[0-9]+')
SIZEY=$(identify $i | egrep -o 'x[0-9]+' | egrep -o '[0-9]+')
if(test $SIZEX -ge $SIZEY;)then
convert -size 899x674 $i -resize 899x674 $1_$i;
else
convert -size 503x674 $i -resize 503x674 $1_$i;
fi
echo "resized image $1_$i created." ;
done

Torej, rad bi da mi sliko 2592x1944 zmanjša na 899x674.
Če je portret slika, pa na 503x674.

če zažene zgornjo skripto mi zmanjša sliko veličine 2592x1944 na 503x377.
Očitno je nekje napaka v skripti ali pa je cela skripta bolj boga.

Lahko kdo pomaga, ali pa če ima kakšno drugo delujočo skripto.
drugače delam to z programom gThumb Image Viewer. Samo bi bilo lažje in hitreje s skripto.
Ker vzamem original sliko in jo pomanjšam 2x. Na 899x674 in 227x170.
Oziroma če je portret slika na 503x674 in 227x302.

Komentarji

  • V splošnem -resize delat na fiksno velikost ni vredu, če slike niso enake, želiš ali vse enake višine (-resize x100 npr) in različne širine ali obratno (-resize 300x), da ohraniš razmerje, nato pa s -crop izrežeš http://www.imagemagick.org/Usage/crop/#crop_repage
  • Hmm...zdej mi ni jasno kako bi to v skripti izvedel. 899x674 je še vedno enako razmerje, tako, da naj bi to delal pomoje. In bi mogla bit slika ok.
  • bilko Član
    uredil/-a 15. March, 2011
    Sem našel en program Phatch, kateri naredi to kar bi rad. In si tudi shrani nastavitve, tako na naslednjič samo naložiš kar bi rad naredil s slikami in komot obdelaš kup slik na enkrat.
    Sedaj bom veliko hitreje poštimal slike.

    Sedaj sem malo bolj pogledal in sprobal tale program in mi je res všeč. Ko enkrat naštimaš kar pač želiš, da ti naredi s slikami samo posnameš ta "profil" in naslednjič ga naložiš, vržeš not slike in to je več ali manj to. Slike ti uredi kot imaš naštimano.

    Jaz sem si naredil dva profila. Enega za portrait slike in enega za landscape. Pač naložim profil odvisno katere slike želim zmanjšat in potem samo izberem vse slike in jih vržem not. Program potem naredi dve mapi, (to si naštimaš po želji) landscape in portrait in v njih še mapi tn. Tako mi na enkrat da v mapo portrait slike 899x674 in v mapo portrait/tn slike 227x170.

    Sicer ni skripta, deluje pa :)
    Če kdo obdeluje večjo količino slik in recimo dela iste operacije, je tale programček zakon, ker si pač narediš "profil" kaj naj ti naredi s slikami in imaš naslednjič takoj vse pripravljeno za obdelavo.
  • Če imaš nameščen gimp, potem vstavek gimp-plugin-registry vsebuje tudi skripto za batch operacije.
  • Naredi si eno mapo, kamor boš dajal slike za spreminjat velikost. V njej naredi datoteko, v kateri bo:
    mogrify -size 480x640 -resize 480x640 +profile \"*\" *.jpg
    ls -l *.jpg
    chmod 444 *.jpg
    exit

    Datoteka naj bo izvedljiva in vsakič, ko boš kliknil nanjo, bodo vse slike jpg v mapi spremenjene na navedeno velikost.
  • Niber je dejal/-a:
    Naredi si eno mapo, kamor boš dajal slike za spreminjat velikost. V njej naredi datoteko, v kateri bo:
    mogrify -size 480x640 -resize 480x640 +profile \"*\" *.jpg
    ls -l *.jpg
    chmod 444 *.jpg
    exit

    Datoteka naj bo izvedljiva in vsakič, ko boš kliknil nanjo, bodo vse slike jpg v mapi spremenjene na navedeno velikost.
    Hvala Niber!
    To je bilo to kar sem želel. Preprosta in učinkovita skripta. Za portrait slike sem samo moral pravilno zapisat, višino x širino in ne obratno in sedaj vse lepo deluje.
  • t3ch Član
    uredil/-a 16. March, 2011
    #!/bin/bash

    WIDTH=$1
    if [[ $WIDTH == '' ]]
    then
    echo \"Usage: $0 (resize_width_number)\"
    echo \"Eample: $0 512\"
    echo \"That will resize picture to width: 512px, height: automaticaly calculated.. :)\"
    exit;
    fi

    for i in `ls *.jpg`
    do
    echo -n \"Converting file: $i\"
    SW=`identify $i|awk '{ print $3 }'|cut -d x -f 1` # width of file
    SH=`identify $i|awk '{ print $3 }'|cut -d x -f 2` # height of file
    let PERCENTAGE=(WIDTH*100)/SW;
    FS=`echo $i|cut -d '.' -f 1`
    FE=`echo $i|cut -d '.' -f 2`
    NF=\"$FS-resized.$FE\"
    echo \" to \"$SW\"px -> \"$WIDTH\"px(\"$PERCENTAGE\"%) -> $NF\"
    convert $i -resize $PERCENTAGE $NF
    done


    m5it@(none) ~/m5it-programs/m5it/imgresize $ ls -lh
    skupno 1,2M
    -rw-r--r-- 1 m5it m5it 263K mar 15 15:07 20061103GTWaterColor-1280x1024.jpg
    -rw-r--r-- 1 m5it m5it 91K mar 15 15:06 gay-test.jpg
    -rw-r--r-- 1 m5it m5it 312K mar 15 15:07 hb.jpg
    -rwxr-xr-x 1 m5it m5it 1,1K mar 16 10:52 imgr.sh
    -rw-r--r-- 1 m5it m5it 350K mar 15 15:07 landscape16_1280x1024.jpg
    -rw-r--r-- 1 m5it m5it 143K mar 15 15:07 Tinker_Bell_Fairies_1280x1024.jpg
    m5it@(none) ~/m5it-programs/m5it/imgresize $ ./imgr.sh 1024
    Converting file: 20061103GTWaterColor-1280x1024.jpg to 1280px -> 1024px(80%) -> 20061103GTWaterColor-1280x1024-resized.jpg
    Converting file: gay-test.jpg to 750px -> 1024px(136%) -> gay-test-resized.jpg
    Converting file: hb.jpg to 1280px -> 1024px(80%) -> hb-resized.jpg
    Converting file: landscape16_1280x1024.jpg to 1280px -> 1024px(80%) -> landscape16_1280x1024-resized.jpg
    Converting file: Tinker_Bell_Fairies_1280x1024.jpg to 1280px -> 1024px(80%) -> Tinker_Bell_Fairies_1280x1024-resized.jpg
    m5it@(none) ~/m5it-programs/m5it/imgresize $ ls -lh
    skupno 1,2M
    -rw-r--r-- 1 m5it m5it 263K mar 15 15:07 20061103GTWaterColor-1280x1024.jpg
    -rw-r--r-- 1 m5it m5it 19K mar 16 10:53 20061103GTWaterColor-1280x1024-resized.jpg
    -rw-r--r-- 1 m5it m5it 91K mar 15 15:06 gay-test.jpg
    -rw-r--r-- 1 m5it m5it 7,0K mar 16 10:53 gay-test-resized.jpg
    -rw-r--r-- 1 m5it m5it 312K mar 15 15:07 hb.jpg
    -rw-r--r-- 1 m5it m5it 3,3K mar 16 10:53 hb-resized.jpg
    -rwxr-xr-x 1 m5it m5it 1,1K mar 16 10:52 imgr.sh
    -rw-r--r-- 1 m5it m5it 350K mar 15 15:07 landscape16_1280x1024.jpg
    -rw-r--r-- 1 m5it m5it 2,2K mar 16 10:53 landscape16_1280x1024-resized.jpg
    -rw-r--r-- 1 m5it m5it 143K mar 15 15:07 Tinker_Bell_Fairies_1280x1024.jpg
    -rw-r--r-- 1 m5it m5it 2,0K mar 16 10:53 Tinker_Bell_Fairies_1280x1024-resized.jpg

    Uporabno: http://www.imagemagick.org/script/convert.php
  • Uporabno: http://www.imagemagick.org/script/convert.php

    Ja, res uporabno. Nisem vedel, da se da tako enostavno obdelat-konvertat sliko že kar v terminalu.
    Sem bookmarkal stran.
  • eko še ena verzija ki ti resize-a slike v nov folder. (Je pa skripto napisal Miha ne jz:))


    #!/bin/bash
    mkdir resized
    for i in `ls *.jpg`
    do
    echo -n "Converting file: $i to resized/$i "
    convert $i -resize $1 resized/$i
    done
Za komentiranje se prijavite ali pa se vpišite.