Skript na kompresi obrázků JPG

vma

Skript na kompresi obrázků JPG
« kdy: 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.
« Poslední změna: 27. 09. 2010, 11:53:58 od Petr Krčmář »


Re: Skript - kompresia obrázkov .jpg
« Odpověď #1 kdy: 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).

Re: Skript - kompresia obrázkov .jpg
« Odpověď #2 kdy: 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.

Vlado

Re: Skript na kompresi obrázků JPG
« Odpověď #3 kdy: 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.

dustin

Re: Skript na kompresi obrázků JPG
« Odpověď #4 kdy: 27. 09. 2010, 12:48:45 »
Příkaz convert má zajímavou funkci  - viz http://www.imagemagick.org/Usage/resize/#shrink


aaa

Re: Skript - kompresia obrázkov .jpg
« Odpověď #5 kdy: 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)

vma

Re: Skript na kompresi obrázků JPG
« Odpověď #6 kdy: 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.

Vlado

Re: Skript na kompresi obrázků JPG
« Odpověď #7 kdy: 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  :)

Re: Skript na kompresi obrázků JPG
« Odpověď #8 kdy: 28. 09. 2010, 11:02:43 »
V tom případě můžu doporučit náš občasník Hrátky z řádky. Jsem rád, že jsem s tím problémem pomohl.

stilett

Re: Skript na kompresi obrázků JPG
« Odpověď #9 kdy: 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 {} \;

Jenda

Re: Skript - kompresia obrázkov .jpg
« Odpověď #10 kdy: 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.

Vlado

Re: Skript na kompresi obrázků JPG
« Odpověď #11 kdy: 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é.

stilett

Re: Skript na kompresi obrázků JPG
« Odpověď #12 kdy: 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.