2016-03-16 25 views
12

ho trovato due leggermente in conflitto post di blog su questo argomento, qui riassumo:jpegoptim vs jpegtran vs mozjpeg

Aggiungendo alla confusione, questo Reddit thread suggerisce che mozjpeg usa lo stesso algoritmo usato in jpegcrush e che jpegcrush è un wrapper per jpegtran ... quindi siamo tornati al punto di partenza? Posso solo supporre che quei commenti di Reddit siano sbagliati, qualcuno può confermarlo?

+0

Come potete leggere dalla [descrizione JPGCrush] (http://u88.n24.queensu.ca/exiftool/forum/index.php?topic=3610.0) e da [quell'articolo] (https: // techcrunch. com/2014/03/05/mozillas-new-jpeg-encoder-promises-up-to-10-reduction-in-file-sizes /), JPGCrush è un wrapper Perl attorno a 'jpegtran' che esercita diverse opzioni di compressione JPEG (elencato in 'jpeg_scan_rgb.txt' - ogni riga è una struttura [' jpeg_scan_info'] (https://github.com/cloudflare/jpegtran/blob/570e8e87c8c618ff028e60eb84eaa816a3fe6b40/jpeglib.h#L198) e sceglie l'output più piccolo. E 'mozjpeg' segue lo stesso algoritmo. –

+1

Trova la risposta alla tua domanda [qui] (https://news.ycombinator.com/item?id=8142893#up_8143648): _jpegcrush/jpegrescan trick: modifica i dettagli del JPEG progressivo per la massima compressione (ogni scansione ottiene il suo possedere la tabella di Huffman e JPEG può dividere arbitrariamente i dati nelle scansioni) _. Trovato anche [descrizione del file di scansione] (https://github.com/mozilla/mozjpeg/blob/v3.1/wizard.txt # L113). –

risposta

0

La libreria MozJPEG utilizza un algoritmo ispirato a jpegcrush (scansione progressiva ottimizzata), ma tecnicamente è un'implementazione completamente nuova.

La libreria MozJPEG è una sostituzione drop-in per il popolare libjpeg, quindi quasi tutti gli strumenti relativi a JPEG possono essere compilati in versioni "regolari" e "MozJPEG".

Esiste uno "regolare" jpegtran e una versione MozJPEG di jpegtran. È lo stesso programma, ma la versione di MozJPEG ha impostazioni predefinite diverse e svolge un lavoro extra per comprimere meglio.

Analogamente, jpegoptim viene in genere creato con libjpeg di riserva, ma è anche possibile crearlo con la versione di libjpeg di MozJPEG (ad esempio, ImageOptim).


Ci sono due modi per utilizzare MozJPEG:

  1. lossless (prendere un file JPEG esistente e renderlo un po 'più piccolo). Questo è quello che fa Mozillade jpegtran di MozJPEG.
  2. lossy (crea un nuovo file JPEG da pixel non compressi, con rapporto qualità/file maggiore). Questo è quello che fa Mozillade cjpeg di MozJPEG e altri strumenti come jpegoptim possono essere fatti con MozJPEG.

Entrambe le modalità di funzionamento sono più lente di libjpeg vaniglia non ottimizzante. L'ottimizzazione senza perdite fa meno lavoro, ma raggiunge anche un guadagno minore.

più precisa analisi di velocità è qui: https://libjpeg-turbo.org/About/Mozjpeg

nota che "lento" qui è relativo. In termini assoluti, comprime diversi megapixel al secondo, quindi potrebbe essere abbastanza veloce per la maggior parte delle applicazioni.