Kirjoittaja Aihe: Skripti kuvien pienennykseen  (Luettu 3565 kertaa)

ekeimaja

  • Käyttäjä
  • Viestejä: 84
    • Profiili
Skripti kuvien pienennykseen
« : 24.07.16 - klo:13.53 »
Miten voin tehdä skriptin, millä voi pienentää kaikki hakemistossa olevat kuvat tietyn kokoisiksi, esim >2000px kokoon 800? Toimintaperiaatteeltaan olisi: mene terminaalilla kuvien kansioon, aja skripti, homma valmis.
« Viimeksi muokattu: 24.07.16 - klo:14.00 kirjoittanut ekeimaja »

kamara

  • Käyttäjä
  • Viestejä: 2944
    • Profiili
Vs: Skripti kuvien pienennykseen
« Vastaus #1 : 24.07.16 - klo:14.01 »
Käytä scriptin tekemiseen lempi editoriasi (Esim. Gedit, Nano, Vim, Kate ...)

Käy For-silmukalla kaikki kuvat läpi.
Tee mkdir:llä muutetut-kansio, johon tallennat muutetut kuvat.

Ota talteen kuvan tiedot identify:llä. (kuvan korkeus ja leveys tiedot).

Muuta kuvien koko convert-ohjelmalla.

kamara

  • Käyttäjä
  • Viestejä: 2944
    • Profiili
Vs: Skripti kuvien pienennykseen
« Vastaus #2 : 24.07.16 - klo:14.23 »
Identify:llä leveys...
Koodia: [Valitse]
identify -format "%w" kuvatiedostoni.png

Identify:llä korkeus...
Koodia: [Valitse]
identify -format "%h" kuvatiedostoni.png

Joten... Kuvan tiedot muuttujille:
Koodia: [Valitse]
width=`identify -format "%w" kuvatiedostoni.png`
height=`identify -format "%h" kuvatiedostoni.png`

- Edit laskusuoritukset voi tehdä bc:llä ?
Koodia: [Valitse]
echo "scale=10;10/7"|bc

- Edit 2: Siis uusi korkeus on...
Koodia: [Valitse]
height2=`echo "scale=10;800*$height/$width"|bc`

Tai pyöristettynä kokonaisluvuksi...
Koodia: [Valitse]
height2=`echo "scale=0;($width/2+800*$height)/$width"|bc`

Edit3 - Tässä listataan hakemiston kaikki .png-tiedostot...
Koodia: [Valitse]
for f in *.png do echo $f ;done
« Viimeksi muokattu: 24.07.16 - klo:15.01 kirjoittanut kamara »

ekeimaja

  • Käyttäjä
  • Viestejä: 84
    • Profiili
Vs: Skripti kuvien pienennykseen
« Vastaus #3 : 24.07.16 - klo:15.48 »
Saisko hieman selkeämmän selityksen noihin, kun en ole aikaisemmin noita skriptejä tehnyt.  Ja kuvien lopullinen koko pitäisi olla 800x533

kamara

  • Käyttäjä
  • Viestejä: 2944
    • Profiili
Vs: Skripti kuvien pienennykseen
« Vastaus #4 : 24.07.16 - klo:16.43 »
Saisko hieman selkeämmän selityksen noihin, kun en ole aikaisemmin noita skriptejä tehnyt.  Ja kuvien lopullinen koko pitäisi olla 800x533

Sorry, olen hivenen laiska...
Jos kuvien koko on aina sama, niin silloin ei tarvitse nuuskia kokoa identify:llä. Lyhyt "scripti" on seuraavanlainen...
Koodia: [Valitse]
mkdir 800x533;for f in *.png ;do convert $f -resize "800x533" "800x533/$f"; done

Edit - Sitten "scriptin" selittäminen...
Koodia: [Valitse]
mkdir 800x533;
mkdir:n avulla luodaan hakemisto/kansio 800x533.

For-do-done-silmukalla käydään kaikki kuvat läpi s.e. muuttujan sisällä yksittäisen tiedoston nimi menee $f-muuttujaan. Tässä esimerkissäni käydään png-formaatin kuvat läpi.
Koodia: [Valitse]
for f in *.png ;do
...
done

Silmukan sisällä muutetaan convert-ohjelman avulla kyseisen tiedoston koko 800x533 säilyttäen kuvasuhteet.
Koodia: [Valitse]
convert $f -resize "800x533" "800x533/$f";
Ensimmäinen $f on lähde tiedosto, ja "800x533/$f" on kohdetiedosto, joten kuvat menevät 800x533-hakemiston alle. Varsinaisen kuvakoon muutoksen tekee -resize "800x533"-vipu ja parametri.

Jos haluat näyttää minkä kuvien kokoa muutetaan, niin tiedostonnimet voidaan tulostaa echo-käskyn avulla:
Koodia: [Valitse]
echo "$f->800x533/$f";

Jos lisäät kyseisen käskyn, niin scripti muuttuu siis vähäsen, ja tulos on tämän näköinen...
Koodia: [Valitse]
mkdir 800x533;for f in *.png ;do convert $f -resize "800x533" "800x533/$f";echo "$f->800x533/$f"; done

« Viimeksi muokattu: 24.07.16 - klo:16.57 kirjoittanut kamara »

kamara

  • Käyttäjä
  • Viestejä: 2944
    • Profiili
Vs: Skripti kuvien pienennykseen
« Vastaus #5 : 24.07.16 - klo:17.02 »
Jos haluat tehdä kyseisestä käskysarjasta  scriptin, niin voit kirjoittaa editorilla (Esim. nanolla).

Ensin päätteellö avataan nano:
Koodia: [Valitse]
nano pienennakuvat.sh

Nanoon kirjoitetaan seuraavat tekstit:
Koodia: [Valitse]
#!/bin/bash
mkdir 800x533;
for f in *.png ;
do
    convert $f -resize "800x533" "800x533/$f";
    echo "$f->800x533/$f";
done
(OffTopic)
Huom! vaikka nanolla kirjoitatkin scriptin useampaan riviin, niin se on suoritukseltaan täsmälleen sama kuin yhden rivin ohjelma.
Eli tämä, mutta monen rivin ohjelma on helpommin luettava:
Koodia: [Valitse]
mkdir 800x533;for f in *.png ;do convert $f -resize "800x533" "800x533/$f";echo "$f->800x533/$f"; done
(/OffTopic)

CTRL+X ja tallenna.

Sen jälkeen anna scriptille suoritusoikeudet:
Koodia: [Valitse]
chmod 755 pienennakuvat.sh

Sen jälkeen voitkin testata scriptisi toiminnan käskyttämällä scriptiä päätteen avulla:
Koodia: [Valitse]
./pienennakuvat.sh
« Viimeksi muokattu: 24.07.16 - klo:17.13 kirjoittanut kamara »

jekku

  • Käyttäjä
  • Viestejä: 2624
    • Profiili
Vs: Skripti kuvien pienennykseen
« Vastaus #6 : 25.07.16 - klo:05.15 »
Saisko hieman selkeämmän selityksen noihin, kun en ole aikaisemmin noita skriptejä tehnyt.  Ja kuvien lopullinen koko pitäisi olla 800x533

Onko kaikissa kuvissasi kuvasuhde sama?

Minä käytän ohjelmaa convert (tulee jonkun setin mukana, ei löytyne suoraan aptituden haulla?) mutta en vaihda kuin leveyden:

Koodia: [Valitse]
convert alkup.png -resize 800 muutetut/uusinimi.png

Ja tuo sitten silmukkaan, vaikka kuten aiemmin tässäkin ketjussa ohjeistettu.
(Vaihdan myös nimen vaikka konvertoin eri hakemistoon, koska haluan tietää että kyseessä pienennetty kuva.)

raimo

  • Käyttäjä
  • Viestejä: 4155
  • openSUSE Tumbleweed
    • Profiili
Vs: Skripti kuvien pienennykseen
« Vastaus #7 : 25.07.16 - klo:10.02 »
Minä käytän ohjelmaa convert (tulee jonkun setin mukana, ei löytyne suoraan aptituden haulla?)

Nuo edellämainitut komennot vaatii ImageMagick:n asennuksen
Koodia: [Valitse]
sudo apt-get install imagemagick
http://www.imagemagick.org/
Tietä käyden tien on vanki. Vapaa on vain umpihanki.
Aaro Hellaakoski

Postimies

  • Käyttäjä
  • Viestejä: 2619
    • Profiili
Vs: Skripti kuvien pienennykseen
« Vastaus #8 : 28.08.16 - klo:17.33 »
ImageMagick ohjelmalle löytyy netistä paljon valmiita skriptejä. Voi lisätä vesileiman, terävöittää ym.  Helpoiten homma sujuu ihan Nautiluksella kunhan lisäpaketti on asennettu. Eli klikataan sitä hiiren oikeaa nappia. Aika monella editorilla onnistuu myös. Merkataan kuvat ja import tietyssä koossa ja formaatissa. Pakkauksen laatu vaikuttaa myös. Jos kuvia terävöittää ym. muunnoksessa kuvien tiedostokoko voi olla isompi lievällä pakkauksella vaikka kokoa pienennettäisiin.  Kuvia voi pienentää monella tapaa. Voi kokeilla vaikka  -filter Gaussian  vipua. -quality vivulla pakkauksen laatu. Tuolla on merkitystä jpg kuvilla.