Strumenti per l'ottimizzazione JPEG? [chiuso]


114

Conosci qualche strumento (preferibilmente da riga di comando) per ottimizzare automaticamente e senza perdite i JPEG che potrei integrare nel nostro ambiente di compilazione? Per i PNG sto attualmente utilizzando PNGOUT e generalmente consente di risparmiare circa il 40% di larghezza di banda / dimensione dell'immagine.

Per lo meno, vorrei uno strumento in grado di rimuovere i metadati dai JPG: ho notato uno strano caso in cui ho provato a creare una miniatura da una fotografia e non sono riuscito a ottenere una dimensione inferiore a 34 kB. Dopo aver indagato di più, ho scoperto che i dati EXIF ​​facevano ancora parte dell'immagine e la miniatura era di 3 kB dopo aver rimosso i metadati.

E oltre a ciò, è possibile ottimizzare ulteriormente i JPG senza perdite? L'ottimizzatore PNG prova diverse strategie di compressione, inizializzazione casuale della codifica Huffmann ecc.

Sono consapevole che la maggior parte dei risparmi proviene dal parametro di qualità JPEG e che è una misura piuttosto soggettiva. Sto solo cercando uno strumento che possa essere eseguito come fase di costruzione e che comprima senza perdite alcuni byte dalle immagini.


Stai dicendo che c'erano circa 10 KB di EXIF ​​in un JPG ottimizzato prima che EXIF ​​fosse rimosso?!?!?! Mi chiedo cosa ci sia dentro!
netrox,

Era l'intero blocco EXIF ​​di una fotocamera digitale, inclusi ogni piccolo dettaglio di questa fotografia (esposizione, tempo di scatto, ecc ...)
chris166

@netrox chris166 Questi dettagli non occupano molto spazio, ciò che occupa molto spazio sono le anteprime (dati binari).
Ariel

1
Due interessanti articoli di confronto, che elencano le utilità elencate di seguito: Comparison of JPEG Lossless Compression Tools, giugno 2014 ; Benchmark degli strumenti di ottimizzazione JPEG, febbraio 2013 .
dma_k

@Ariel: Anche il profilo ICC tende a occupare molto spazio. Ho visto oltre 500 KB di dati binari del profilo ICC.
saurabheights

Risposte:


68

Uso libjpeg per operazioni senza perdite. Contiene uno strumento da riga di comando jpegtran che può fare tutto ciò che vuoi. Con l'opzione della riga di comando -copy nonetutti i metadati vengono rimossi e -optimizeviene eseguita un'ottimizzazione senza perdite della compressione Huffmann. Puoi anche convertire le immagini in modalità progressiva con -progressive, ma ciò potrebbe causare problemi di compatibilità (qualcuno ne sa di più?)


5
Wow, sembra promettente. Se qualcuno è interessato, il download per Windows è su gnuwin32.sourceforge.net/packages/jpeg.htm
chris166

Vado per questo. Riduce la mia immagine di sfondo da 62 kB a 49 kB in modalità progressiva. Un'altra immagine (27 kB) è stata ridotta a 23 kB. Si tratta di un risparmio del 15-20% senza perdita di qualità!
chris166

2
progressivo funziona bene praticamente in tutto, l'unico inconveniente è che utilizza più CPU per decodificare (non abbastanza extra per importare).
Ariel

1
il progressivo può spesso essere più grande della linea di base per file inferiori a 9k
Collin Anderson

3
Progressivo ha bisogno di molta più memoria per essere decodificato. È possibile eseguire lo streaming di file jpeg regolari: è sufficiente decodificarli in piccole sezioni. Per decodificare un jpg progressivo è necessario conservare l'intera immagine decompressa in memoria contemporaneamente.
jcupitt

72

Ho scritto una GUI per tutti gli strumenti di ottimizzazione delle immagini che ho trovato , incluso MozJPEG e jpegoptimche ottimizza le tabelle di Huffman, le scansioni progressive e (facoltativamente) rimuove i metadati invisibili.

ImageOptim lo schiaccia

Se non hai un Mac, ho anche un'interfaccia web di base che funziona su qualsiasi piattaforma.


5
Eccellente! Lei, signore, ha bisogno di un pulsante Flattr. Oppure unisciti a Gittip.
Thilo

2
ImageOptim e ImageAlpha sono fantastici!
Jon z

Ottimo strumento - suggerimento minore. Perché limitare JPEGoptim alla qualità dell'80%: le immagini di sfondo di grandi dimensioni spesso vorresti che arrivassero al 60% o anche meno. grazie
niico

perché rimuovere i dati EXIF? : /
Adrien Be

@AdrienBe 1. Privacy. Potresti non volere che tutti in rete conoscano la tua posizione GPS. 2. perché nei file salvati da Photoshop possono esserci megabyte di immondizia XML incorporati nei file.
Kornel

12

[SOLO WINDOWS]

RIOT (Radical Image Optimization Tool) Questo è il più grande strumento di ottimizzazione delle immagini che abbia trovato!

http://luci.criosweb.ro/riot/

Puoi facilmente ottenere un'immagine da 10 MB fino a 800 KB tramite il sottocampionamento. Supporta PNG, GIF e JPEG. Si integra anche nei menu contestuali in modo da poter inviare le immagini direttamente lì. Consente di ruotare, ridimensionare, comprimere in KB specificati e altro ancora. Ha anche plugin per GIMP e IrfanView e altre cose.

C'è anche una DLL disponibile se si desidera incorporarla nei propri programmi o nel programma java script / c ++.

Un'altra alternativa è http://pnggauntlet.com/ PNGGAUNTLET richiede un'eternità ma fa un buon lavoro.

[SOLO WINDOWS]


7
Attenzione: RIOT ha un bell'aspetto ma installa TuneUp e roba del genere senza chiedertelo, .. Lo classificherei come Malware.
Daniel W.

1
@DanFromGermany ha ragione. Vedi le recensioni qui: download.cnet.com/RIOT/3000-12511_4-10911908.html#summaryList
RNickMcCandless

1
Fino a poco tempo fa.
Ben

Avviso malware! Il download manager di Chrome avverte che RIOT è un malware
ruhong

8
FYI: C'è un file .zip portatile per RIOT che non contiene malware o programmi di installazione di alcun tipo. Basta scorrere verso il basso nella loro pagina dei download. luci.criosweb.ro/riot/download
Goyuix

12

Un nuovo servizio chiamato JPEGmini produce risultati incredibili. Peccato che sia solo online. Modifica : ora è disponibile per Windows e Mac


Ora è disponibile un'app per Mac (divulgazione: sono nel team di sviluppo)
DanJ,

4
Non so se sei l'autore o meno, ma quell'app sta fuorviando gli utenti. Se esegui jpegquality.c sulle loro immagini "mini" per rilevare la quantità di compressione, e poi comprimi gli originali con imagemagick con la stessa qualità => ottieni gli stessi risultati, gli stessi artefatti JPEG in entrambe le immagini. Imagemagick può essere open-source, ma questo non lo rende ok per usarlo e quindi afferma che hai sviluppato una nuova tecnologia di compressione
bel culo

@onetrickpony: non sono affiliato con loro in alcun modo.
Eduardo Molteni

@niceass Come fai a sapere che JPEGmini utilizza il codice ImageMagick? Conoscere il fattore di qualità è lo stesso dell'output di IM non è una prova. La mia ipotesi è che ricomprimano l'immagine riducendo i fattori di qualità forse con un po 'di filtraggio e usano una metrica di qualità per decidere quando fermarsi.
koan

Ho eseguito l'ultimo JPEGmini su un'immagine che avevo precedentemente esportato da ImageMagick ed è stato riferito che JPEGmini era già stato eseguito su di esso, cosa che non ricordo di aver fatto. L'esecuzione di jpegtran -optimize -copy none sulla stessa immagine ha ridotto le dimensioni di 12 KB.
koan

10

Ho provato una serie di suggerimenti sopra: personalmente cercavo la compressione senza perdite.

La mia immagine di esempio aveva una dimensione originale di 67.737 byte.

Usando kraken.io, è sceso a 64.718 Utilizzando jpegtran, è sceso a 64.718 Usando yahoo smush-it, è sceso a 61.746 Usando imagemagick (-strip), è sceso a 65.312

L'opzione smush.py sembra promettente, ma l'installazione era troppo complessa per me da eseguire rapidamente

Anche jpegrescan sembra promettente, ma sembra essere unix e sto usando Windows

jpegmini NON è senza perdite, ma non posso dire la differenza (fino a 22.172)

L'app Altrasoft jpegstripper di plinth non funziona su Windows 7

jpegoptim non è Windows, non va bene per me

Riot (mantenendo la qualità al 100%) lo ha portato a 63.416 e con il sottocampionamento della crominanza impostato su alto, è arrivato a 61.912 - Non so se sia senza perdita o meno, e penso che sembri più leggero dell'originale .

Quindi il mio verdetto è yahoo smushit se deve essere senza perdite


jpegrescan funziona su Windows se sei testardo. Rade le dimensioni come per magia (5-15% senza perdita di qualità), il che è sorprendente, perché sta solo riordinando l'ordine di scansione progressiva AFAIK (potresti notare lo stesso in altri programmi, i file a volte diventano leggermente più piccoli in Photoshop se si sceglie un numero diverso di scansioni, senza motivo apparente). Inoltre, è stato realizzato da uno dei ragazzi che ha realizzato x264, è un vero prodigio nel campo della compressione.
Camilo Martin


7

ImageOptim è davvero eccellente. L'opzione della riga di comando pubblicata dall'autore popolerà la GUI e mostrerà lo stato di avanzamento. Ho usato jpegtran per l'ottimizzazione e la conversione in progressivo, quindi ImageOptim per ulteriori ottimizzazioni progressive e per altri tipi di file.

Riutilizzo del codice script trovato anche in questo forum (tutti i file sostituiti al loro posto):

jpegtran

for file in $(find $DIR -type f \( -name "*.jpg" -or -name "*.jpeg" -or -name "*.JPG" \)); do
    echo found $file for optimizing...
    jpegtran -copy comments -optimize -progressive -outfile $file $file
done

ImageOptim

for file in $(find $DIR -type f \( -name "*.jpg" -or -name "*.png" -or -name "*.gif" \)); do
do
    echo found $file for optimizing...
    open -a ImageOptim.app $file
done

4

Nel caso qualcuno stia cercando, ho scritto una versione offline di Smush.it di Yahoo. Ottimizzerà senza perdite png, jpg e gif (animati e statici):

http://github.com/thebeansgroup/smush.py


Funziona bene ma c'è un problema con la compressione png :(

4

Puoi usare jpegoptim che ottimizzerà senza perdite i file jpeg per impostazione predefinita. L' --strip-allopzione rimuove tutte le informazioni aggiuntive incorporate. È anche possibile specificare una modalità con perdita di dati con l' --maxinterruttore che è utile quando si hanno immagini salvate con un'impostazione di qualità molto alta, che non è necessaria per es. contenuto del web.

Ottieni un'ottimizzazione simile a jpegtran (vedi risposta di OutOfMemory) ma jpegoptim non può salvare in jpeg progressivi.


4

Ho scritto uno strumento a riga di comando chiamato "picopt" (simile a ImageOptim) che utilizza programmi esterni per ottimizzare JPEG, PNG, GIF, GIF animate e persino contenuti di archivi di fumetti (CBR / CBZ).

Questo è adatto per l'uso con homebrew su sistemi OS X o Linux in cui sono stati installati strumenti come jpegrescan, jpegtran, optipng, gifsicle, ecc.

https://github.com/ajslater/picopt


Esiste una versione per Windows di questo?
starbeamrainbowlabs

se puoi installare le sue dipendenze posix in un ambiente Windows come cygwin potrebbe farlo. Saresti il ​​primo a provarlo, però.
AJ Slater

3

Anch'io consiglierei ImageMagick . Ha un'opzione della riga di comando per rimuovere i metadati EXIF

mogrify -strip image.jpg

Ci sono molti altri strumenti là fuori che fanno la stessa cosa.

Per quanto riguarda la ricompressione dei JPEG, non farlo. I JPEG sono con perdite all'inizio, quindi qualsiasi forma di ricompressione danneggerà solo la qualità dell'immagine. Tuttavia, se hai immagini codificate senza perdita di dati, alcuni codificatori fanno un lavoro migliore di altri. Ho notato che i JPEG realizzati con Photoshop hanno un aspetto costantemente migliore rispetto a quando codificati con ImageMagick (nonostante le stesse dimensioni del file) a causa di motivi complicati . Inoltre (e questo è rilevante per te), so che almeno Photoshop può salvare i JPEG come ottimizzati, il che significa che perdono la compatibilità con alcune cose che probabilmente non ti interessano per salvare un paio di KB. Inoltre, assicurati di non avere alcun profilo colore incorporato e potresti essere in grado di salvare un altro paio di KB.


Interessante. Ho sempre pensato che la qualità del 90% fosse la stessa per tutti gli strumenti di immagine. Photoshop è l'unico strumento che utilizza coefficienti DCT ottimizzati?
chris166

1
Pensavo che il 90% sarebbe stato lo stesso su vari strumenti fino a quando non ho provato a salvare le stesse immagini in Photoshop e Imagemagick. Ho scoperto che circa il 70% in Salva per Web in Photoshop ha creato file che avevano all'incirca le stesse dimensioni del 92% in Imagemagick, ma i file Photoshop erano di qualità notevolmente migliore. Non ho idea di come lo facciano altri strumenti.
David Johnstone

Sai come eseguire lo stripping dei metadati EXIF ​​utilizzando la versione PHP di ImageMagick?
Sonny

@Sonny Non proprio, ma potresti essere interessato a questa funzione: php.net/manual/en/function.imagick-stripimage.php
David Johnstone

Grazie David, è quello che ho scoperto. Ecco il mio thread: stackoverflow.com/questions/2540068
Sonny

2

Consiglierei di usare http://kraken.io È una webapp ultra veloce che ottimizzerà i tuoi file PNG e JPEG molto meglio di smush.it.


2

Consiglio di usare JpegOptim, è gratuito e davvero carino, puoi specificare la qualità, la dimensione che desideri ... E facile da usare nella riga di comando.

jpegoptim


1

Posso consigliarlo per una quasi trasparenza:

convert 'yourfile.png' ppm:- | jpeg-recompress -t 97 -q veryhigh -a -m smallfry -s -r -S disable - yourfile.jpg

Esso utilizza ImageMagick s' converte jpeg-recompressdal jpeg-archivio .

Entrambi sono open source e funzionano su Windows, Mac e Linux. Potresti voler modificare le opzioni sopra per diverse aspettative di qualità.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.