Fórum Root.cz

Hlavní témata => Software => Téma založeno: vma 27. 09. 2010, 10:45:44

Název: Skript na kompresi obrázků JPG
Přispěvatel: vma 27. 09. 2010, 10:45:44
Mám prosbu, či niekto neriešil takúto úlohu:
- nájsť obrázok ak je jeho veľkosť viac ako ... MB
- skomprimovať (napríklad príkazom convert) napríklad na 50%
- zapísať pod pôvodným názvom
rekurzívne spracovať všetky podadresáre

Cieľom je zmenšiť veľkosť obrázkov obalov CD v adresároch s hudbou, ktoré sú väčšie ako zadaná hranica.
Ďakujem.
Název: Re: Skript - kompresia obrázkov .jpg
Přispěvatel: Václav Zajíc 27. 09. 2010, 11:12:14
Pokud to nutne nemusite resit skriptem a pouzivate widle, jde to jednoduse udelat treba programem IrfanView (free pro nekomercni pouziti). Jde tam pracovat s davkovymi konverzemi (nekde v menu je "batch conversion" - uz si nepamatuju kde, pouzil jsem to asi pred pul rokem).
Název: Re: Skript - kompresia obrázkov .jpg
Přispěvatel: Petr Krčmář 27. 09. 2010, 11:53:45
Mělo by fungovat něco takového:

find . -name "*jp*g" -size +2M -exec convert -resize 1000x1000 -quality 80 {} kopie.jpg \; -exec mv -f kopie.jpg {} \;

Najde to soubor větší než 2 MB, zkonvertuje ho do souboru kopie.jpg a ten pak přejmenuje na původní název. To harakiri s přejmenováním jsem tam musel dát, protože convert neumí (nebo nevím jak na to) přepsat původní konvertovaný soubor, ale vždycky musí udělat kopii. Vyzkoušel jsem to a funguje to, uprav si podle potřeb.
Název: Re: Skript na kompresi obrázků JPG
Přispěvatel: Vlado 27. 09. 2010, 12:06:15
Ďakujem, skúsim to doma - tam mám Linux. Riešenie s IrfanView má jednú chybu - ale podstatnú. Nenašiel som, ako preskočiť menšie súbory. Konvertuje to všetko a to sa mi nepáči.
Název: Re: Skript na kompresi obrázků JPG
Přispěvatel: dustin 27. 09. 2010, 12:48:45
Příkaz convert má zajímavou funkci  - viz http://www.imagemagick.org/Usage/resize/#shrink
Název: Re: Skript - kompresia obrázkov .jpg
Přispěvatel: aaa 27. 09. 2010, 14:17:36

find . -name "*jp*g" -size +2M -exec convert -resize 1000x1000 -quality 80 {} kopie.jpg \; -exec mv -f kopie.jpg {} \;

Ja by som este zmenil -name na -iname, pre pripad pripon s velkymi pismenami (download z niektorych fotakov)
Název: Re: Skript na kompresi obrázků JPG
Přispěvatel: vma 27. 09. 2010, 19:20:59
Skúsil som to na vzorke súborov - s modifikáciou -iname - zdá sa, že to nemá chybu. Vďaka. Kto umí ten umí... Urobím zálohu a skúsim to naostro.
Název: Re: Skript na kompresi obrázků JPG
Přispěvatel: Vlado 28. 09. 2010, 07:17:15
Funguje to. Ešte raz dík. Som iba domáci užívateľ Linuxu, ale fascinuje ma možnosť v jednom riadku vyriešiť problém, ktorý Windows rieši cez klikanie. Skúsil som minule rozdeliť image .flac cez cue sheet. Windows postup - konverzia flac - wav, rozdelenie wav programom EAC, konverzia wav - flac. Linux - jeden príkaz cuebreakpoints... Výsledok som porovnal - sedelo to na bit presne. Ak by mal niekto nejaký tip na dobrú učebnicu pre príkazovú riadku, budem rád. Jednoduchšie knihy a nejaké pdf-ka mám, ale neviem vymyslieť nečo zložitejšie. Najlepšie sa učí na príkladoch. Manuálove stránky sú niekedy 'hardcore' čítanie  :)
Název: Re: Skript na kompresi obrázků JPG
Přispěvatel: Petr Krčmář 28. 09. 2010, 11:02:43
V tom případě můžu doporučit náš občasník Hrátky z řádky (http://www.root.cz/serialy/hratky-z-radky/). Jsem rád, že jsem s tím problémem pomohl.
Název: Re: Skript na kompresi obrázků JPG
Přispěvatel: stilett 28. 09. 2010, 17:26:18
Dodal bych, že pokud se mají existující fotky modifikovat na místě, tak je jednodušší použít příkaz mogrify místo dvojice convert a mv.

find . -iname "*jp*g" -size +2M -exec mogrify -resize 1000x1000 -quality 80 {} \;
Název: Re: Skript - kompresia obrázkov .jpg
Přispěvatel: Jenda 28. 09. 2010, 18:08:57

find . -name "*jp*g" -size +2M -exec convert -resize 1000x1000 -quality 80 {} kopie.jpg \; -exec mv -f kopie.jpg {} \;

Ja by som este zmenil -name na -iname, pre pripad pripon s velkymi pismenami (download z niektorych fotakov)
Ještě mě napadlo, že mogrify mění na rozdíl od convertu „in place“, takže není potřeba to cp.
Název: Re: Skript na kompresi obrázků JPG
Přispěvatel: Vlado 30. 09. 2010, 07:20:19
Odskúšané, funguje. Dík za ďalšiu možnosť. Neporovnával som výsledok, malo by to byť to isté.
Název: Re: Skript na kompresi obrázků JPG
Přispěvatel: stilett 01. 10. 2010, 09:18:32
Výsledek by měl být stejný, protože mogrify a convert jsou oba nástroje z balíku ImageMagick a liší se právě jenom tím, že jeden přepisuje původní soubor a druhý zapisuje do jiného.