1. Identificazione del formato dell'immagine
Formati di immagine supportati
Pillow supporta molti formati di immagine, inclusi:
- JPEG (JPG): Uno dei formati più usati per le foto. Comprime l'immagine con perdita di qualità, ma riduce significativamente la dimensione del file. Non supporta la trasparenza.
- PNG: Un formato senza perdita che supporta la trasparenza (canale alfa). Ideale per loghi, icone e immagini in cui è importante la nitidezza.
- BMP: Un formato di alta qualità senza compressione, ma con dimensioni di file elevate. Supporta la trasparenza.
- TIFF: Popolare per archiviare immagini senza perdita, spesso usato nella stampa.
- WEBP: Un formato moderno con un alto livello di compressione e supporto per la trasparenza. Ideale per immagini web, garantendo una dimensione ridotta del file e una buona qualità.
Caricamento di un'immagine per la conversione
Prima di convertire un'immagine, è necessario caricarla utilizzando il metodo Image.open()
.
from PIL import Image
# Apertura dell'immagine
image = Image.open("example.jpg")
print(image.format) # Controlla il formato originale dell'immagine
2. Conversione di un'immagine in un altro formato
Il metodo save()
consente di salvare le immagini in diversi formati, semplicemente cambiando l'estensione nel nome del file o specificando esplicitamente il formato.
Conversione da JPEG a PNG
Per convertire un'immagine da JPEG a PNG, basta specificare la nuova estensione durante il salvataggio del file:
# Salvataggio dell'immagine in formato PNG
image.save("example_converted.png")
Questo codice converte l'immagine da JPEG a PNG e la salva con il nome specificato. Il formato PNG è ideale per il salvataggio di immagini senza perdite e supporta aree trasparenti.
Conversione da PNG a JPEG
La conversione di un'immagine PNG in JPEG è possibile, ma è importante sapere che JPEG non supporta la trasparenza. Durante la conversione, le aree trasparenti saranno riempite con il colore bianco.
# Conversione da PNG a JPEG (la trasparenza sarà sostituita con uno sfondo bianco)
image = image.convert("RGB") # Passa alla modalità RGB necessaria per JPEG
image.save("example_converted.jpg", "JPEG")
Il metodo convert("RGB")
viene usato per convertire l'immagine in modalità RGB, poiché JPEG non supporta aree trasparenti. Ciò è necessario per salvare il file in formato JPEG.
3. Gestione della qualità dell'immagine
Per ottimizzare le immagini, Pillow offre i parametri quality
e optimize
, che permettono di controllare la qualità e la dimensione del file. Questi parametri sono particolarmente utili per JPEG e PNG.
Ottimizzazione e gestione della qualità JPEG
Quando si salva un'immagine in formato JPEG, il parametro quality
regola il livello di compressione. Più alto è il valore della qualità, maggiore sarà la dimensione del file e migliore sarà la qualità dell'immagine. Il valore quality
varia da 1 a 95 (impostazione predefinita 75).
# Salvataggio di un'immagine JPEG con qualità ridotta
image.save("example_compressed.jpg", "JPEG", quality=85)
Questo codice salva l'immagine con una qualità di 85, che di solito mantiene una buona qualità riducendo la dimensione del file. Se hai bisogno di una qualità inferiore, ad esempio per creare miniature, puoi specificare quality = 50
.
Ottimizzazione PNG
Per PNG, il parametro optimize = True
esegue una compressione senza perdite eliminando i dati ridondanti. Questo è particolarmente utile per la pubblicazione di immagini sul web.
# Salvataggio di un PNG ottimizzato
image.save("example_optimized.png", "PNG", optimize=True)
L'ottimizzazione PNG aiuta a ridurre la dimensione del file senza perdita di qualità, il che è particolarmente importante per loghi e icone, dove ogni kilobyte conta.
Confronto della qualità JPEG con diversi livelli di compressione
Vediamo come la modifica del parametro quality
influenza la dimensione del file e la qualità dell'immagine.
# Salvataggio di immagini JPEG con qualità diversa
image.save("quality_95.jpg", "JPEG", quality=95)
image.save("quality_75.jpg", "JPEG", quality=75)
image.save("quality_50.jpg", "JPEG", quality=50)
In questo esempio, salviamo la stessa immagine con tre livelli di qualità: 95, 75 e 50. Un'immagine con qualità 95 sarà quasi indistinguibile dall'originale, ma occuperà più spazio, mentre una qualità di 50 porterà a una compressione significativa e, possibilmente, a una perdita visibile di dettagli.
4. Uso del formato WebP
Il formato WebP è un formato moderno che supporta sia la compressione con perdita che senza perdita, oltre alla trasparenza. È ampiamente usato sul web grazie all'alto livello di compressione.
Conversione di un'immagine nel formato WebP
# Conversione di un'immagine in WebP
image.save("example.webp", "WEBP", quality=80)
In questo esempio salviamo l'immagine in formato WebP con una qualità di 80. WebP consente di ottenere una dimensione del file significativamente più piccola rispetto a JPEG o PNG con una qualità simile.
Esempio di conversione completa con ottimizzazione
Ora uniamo tutti i metodi esaminati e creiamo uno script per convertire un'immagine in più formati con ottimizzazione.
from PIL import Image
# Apertura dell'immagine
image = Image.open("example.jpg")
# Conversione in PNG con ottimizzazione
image.save("converted_optimized.png", "PNG", optimize=True)
# Conversione in JPEG con qualità ridotta
image_rgb = image.convert("RGB") # Passa alla modalità RGB per JPEG
image_rgb.save("converted_compressed.jpg", "JPEG", quality=85)
# Conversione in WebP con ottimizzazione della qualità
image_rgb.save("converted_optimized.webp", "WEBP", quality=80)
In questo esempio:
- Convertiamo l'immagine in PNG con ottimizzazione, riducendo la dimensione del file senza perdite.
- Salviamo l'immagine in formato JPEG con qualità 85, garantendo una buona qualità e una dimensione del file ridotta.
- Convertiamo l'immagine in formato WebP, ideale per la pubblicazione sul web, mantenendo alta qualità con una dimensione del file ridotta.
GO TO FULL VERSION