2015-10-12 15 views
16

Sto facendo ottimizzazione e Google consiglia la compressione senza perdita di immagini, cercando un modo per implementarlo in Django.Comprimere senza perdita di immagini su django

Ecco le immagini che hanno specificato, penso che per farlo in modo efficace deve essere implementato a livello di sistema possibilmente utilizzando una classe middleware chiedendo se qualcuno ha fatto prima. Ecco il link a google analytics per la velocità di pagina https://developers.google.com/speed/pagespeed/insights/?url=www.kenyabuzz.com

Ottimizza immagini La corretta formattazione e compressione delle immagini può far risparmiare parecchi byte di dati. Ottimizza le seguenti immagini per ridurne le dimensioni di 627,3 KiB (riduzione del 74%).

Losslessly compressing http://www.kenyabuzz.com/media/uploads/clients/kenya_buzz_2.jpg could save 594.3KiB (92% reduction). 
Losslessly compressing http://www.kenyabuzz.com/media/uploads/clients/new_tribe_2.jpg could save 25KiB (44% reduction). 
Losslessly compressing http://www.kenyabuzz.com/…a/uploads/clients/EthiopianAirlines2.jpg could save 3KiB (22% reduction). 
Losslessly compressing http://www.kenyabuzz.com/static/kb/images/Nightlife.Homepage.jpg could save 1.3KiB (2% reduction). 
Losslessly compressing http://www.kenyabuzz.com/static/kb/img/social/blog.png could save 1.1KiB (43% reduction). 
Losslessly compressing http://www.kenyabuzz.com/static/kb/img/social/twitter.png could save 969B (52% reduction). 
Losslessly compressing http://www.kenyabuzz.com/…der-Board---Email-Signature--Neutral.jpg could save 920B (2% reduction). 
Losslessly compressing http://www.kenyabuzz.com/static/kb/img/social/youtube.png could save 757B (31% reduction). 
+0

In seguito al collegamento https://developers.google.com/speed/docs/insights/OptimizeImages dalla stessa pagina di riferimento fornisce una grande quantità di informazioni. Hai già letto questo? – mhawke

+0

Sì, ma non forniscono informazioni su come implementare lo stesso con Python o Django. Ho cercato su Google "comprimere le immagini con django" e non ho ricevuto alcuna informazione in merito. –

+0

Perché farlo in Django: c'è un link dalla pagina di ottimizzazione di Google che consente a Google di farlo per te. Cattura quelle immagini, carica su server, collectstatic e fatto. – professorDante

risposta

2

Non ho esperienza con esso, tuttavia, picopt sembra completo. Si basa ampiamente su strumenti esterni per eseguire l'ottimizzazione, quindi potrebbe essere difficile configurarlo in ambienti server vincolati o ospitati.

Oltre a ciò, provare a cercare su google "ottimizzazione dell'immagine python". Ci sono un paio di altri collegamenti che suggeriscono che una soluzione basata PIL potrebbe essere possibile, ad esempio:

  1. How to reduce the image file size using PIL
  2. Image Optimization (Google App Engine with Python)
3

Si dovrebbe provare Django Easy Thumbnails app, ha alcune opzioni per aggiungere un postprocessing per ottimizzare le immagini caricate: PostProcessor documentation

Lo uso in produzione su diversi progetti. Funziona bene, la dimensione dell'immagine è decisamente più piccola e il caricamento della pagina molto più veloce.

19

La compressione senza perdite http://www.kenyabuzz.com/media/uploads/clients/kenya_buzz_2.jpg potrebbe consentire di risparmiare 594,3 KiB (riduzione del 92%).

Prima di tutto, le informazioni nei registri è piuttosto fuorviante perché non è possibile comprimere le immagini del 92% utilizzando un formato lossless (ad eccezione di alcuni casi come immagini di un solo colore, forme geometriche di base, come piazze, ecc). Leggi this answer e this answer per maggiori informazioni. Davvero, leggile, entrambe sono ottime risposte.

In secondo luogo, è possibile utilizzare i formati di compressione con perdita "senza perdere la qualità" – le differenze sono così sottili, l'occhio umano non si accorgono neppure.


Così, ho scaricato un'immagine dal sito web si sta ottimizzando da questo link: http://www.kenyabuzz.com/media/uploads/clients/kenya_buzz_2.jpg

ho aperto la mia console Python e scritto questo:

>>> from PIL import Image 

>>> # Open the image 
>>> im = Image.open("kenya_buzz_2.jpg") 
>>> # Now save it 
>>> im.save("kenya_buzz_compressed.jpg", format="JPEG", quality=70) 

Questo ha creato una nuova immagine sul mio disco. Sotto sono entrambe le immagini.

Originale (655.3kB)

original image


compressa (22.4kB ~ 96% di riduzione @ qualità = 70)

compressed image using Python


Si può giocare con l'opzione quality . Ad esempio, il valore di 80 ti darà un'immagine di qualità migliore ma con dimensioni leggermente maggiori.

+2

Esattamente, lo userei nella parte di caricamento, o qualcosa come trimage per immagini statiche semplici. –

+0

Non funziona per me. Ho provato a ridurre un'immagine con 1 MB, ma ho ottenuto una nuova immagine con 1,9 MB: | –

+0

@ Overflow012 Stai impostando il valore 'quality' più di' 95'? Questo è stato conosciuto per aumentare le dimensioni dei file. – xyres

Problemi correlati