2013-10-31 13 views
17

Mi chiedo come capire la migliore velocità di compressione (piccola dimensione file + nessuna perdita di qualità) automaticamente.PHP: Come comprimere le immagini senza perdere la qualità visibile (automaticamente)?

Al momento sto usando imagejpeg() con $quality = 85 per ogni .jpg.

PageSpeed ​​(Chrome Plugin) suggerisce di ridurre la qualità di alcune immagini per risparmiare un po 'di kb. La percentuale di riduzione è diversa.

Mi piacerebbe scrivere un cronjob che esegue la scansione di una directory specifica e ottimizza ogni immagine.

Come funziona PageSpeed ​​o TinyPNG la migliore qualità ottimizzata e ciò è possibile con PHP o un altro linguaggio serveride?

+0

Si stanno già memorizzando nella cache le chiamate 'imagejpeg()', giusto? –

+0

@Pekka: si, lo so. Vorrei ridimensionare le immagini con una qualità del 100%. Il cronjob lo ottimizzerebbe in seguito. La qualità dell'85% è dovuta al fatto che non ho ancora un algoritmo. –

risposta

27

TinyPNG utilizza pngquant.

Pngquant ha l'opzione per impostare la qualità desiderata, simile a JPEG. È possibile eseguire qualcosa di simile:

<?php system('pngquant --quality=85 image.png'); ?> 

Pngquant website has example code showing how to use pngquant from PHP.


Per JPEG è possibile applicare losslessjpegcrush.

JpegMini (commerciale) e jpeg-archive (gratuito) sono lossy e può può trovare automaticamente una buona qualità minima per un JPEG.

In PHP è possibile stimare approssimativamente quanto è stato compresso JPEG osservando quanto cambia la dimensione del file dopo la ri-compressione. Le dimensioni del file di JPEG ricompresse con qualità uguale o superiore non cambieranno molto (ma perderanno la qualità visiva).

Se si ricomprime JPEG e si vede la dimensione del file dimezzata, mantenere la versione ricompressa. Se vedi solo un calo del 10-20% delle dimensioni del file, mantieni l'originale.

Se si sta comprimendo, utilizzare MozJPEG (qui è un online version).

+0

ho provato jpegcrush ma non sembra efficace. questo script perl mi aiuta a ridurre solo il 10% delle dimensioni del file. Jpegmini e tinyjpg possono fare fino al 70%. Qualunque script migliore gratuito può farlo? – TomSawyer

+0

@TomSawyer jpegcrush è senza perdite e ottiene il miglior rapporto qualità/file. Gli altri non lo sono, e sono equivalenti a ri-salvare il file con una qualità inferiore, aggiungendo più distorsioni e avendo un potenziale basso rapporto qualità/file. Se uno strumento ti salva del 70% su JPEG, significa che hai creato il file con un'impostazione di qualità sprecata. – Kornel

+0

Io non la penso così. Ho provato a comprimere molti file con jpgmini e tinyjpg e quasi tutti saranno compressi al lease del 50% e la qualità è la stessa o si può dire cosa è diverso dai tuoi occhi umani. Due servizi di cui sopra riducono la dimensione del file del 70%, ma jpegcrush può fare fino al 10%. Dovresti provare due servizi sopra per vedere la differenza – TomSawyer

Problemi correlati