ImageMagick - Riduzione delle dimensioni dei file

ImageMagick - Riduzione delle dimensioni dei file

Un'immagine bella e grande è quasi fantastica; Di solito è accompagnato da un'enorme qualità. Tuttavia, ci sono molte, molte volte in cui non puoi permetterti di avere immagini di dimensioni troppo grandi. A volte, tutto ciò che vuoi è un'immagine di dimensioni decenti o anche una che è inferiore a una determinata dimensione. In tali casi, tutti i desideri del programmatore sono un modo per trovare una via di mezzo tra qualità e dimensioni. Teoricamente, se rinunci del tutto, la dimensione del file non dovrebbe essere un problema, ma il vero affare è trovare un compromesso tra qualità e dimensioni del file. In questo tutorial, discuteremo dei modi per ridurre la dimensione del file delle immagini usando ImageMagick (senza compromettere troppo la qualità).

Installazione di immagini

Avremo bisogno di ImageMagick per questo, quindi prima, installiamo:

sudo apt-get installa imagemagick

L'interruttore di qualità

Il primo e più semplice modo per ridurre le dimensioni di una foto/immagine/video è ridurre la qualità della foto. L'interruttore di qualità rappresenta il livello di compressione JPEG/MIFF/PNG. Per JPEG e MPEG, una qualità di 1 rappresenta il più alto livello di compressione e la qualità dell'immagine più bassa, mentre 100 rappresentano il minor livello di compressione e la migliore qualità.

Quindi diamo un'occhiata a un esempio; L'immagine che ho scattato di un albero è 4624 × 3468 in termini di risoluzione ed è 5.70226mib. Questa è l'immagine originale, un JPEG, per essere specifica.


Ora, il punto è che vogliamo ridurre le dimensioni dell'immagine. Quindi proviamo a impostare le impostazioni dell'interruttore di qualità su qualcosa di un po 'diverso e vediamo cosa succede.

Convert Tree_4624x3468.jpg -quality 75 albero_4624x3468_quality75.jpg
Convert Tree_4624x3468.jpg -quality 25 albero_4624x3468_quality25.jpg



Ho ridotto la qualità a 75 per un'immagine e 25 per un'altra. L'immagine originale era 5.70226mib, ma l'immagine che era una qualità di 75 è diventata 2.74664Mib Mentre quello di qualità 25 è diventato 1358250 (1.295mib). Qui, seguirei personalmente la qualità del 75%.

Ora, dal momento che ci preoccupiamo anche della qualità effettiva della foto, lascia che ti mostri le foto:


albero_4624x3468_quality75.jpg


albero_4624x3468_quality25.jpg

Come puoi vedere, la qualità non è stata influenzata troppo, ma la dimensione del file è più piccola.

Ora, ho provato a fare lo stesso con PNG, e questo è quello che ho ottenuto:


Quindi, è passato da 23501600b (22.413mib) a 22.2854mib. Per un JPEG, è passato da 5.70226mib a 1.295mib. Per formati non lossy come PNG, l'interruttore di qualità è molto più duro.

Ridimensionare le immagini

Ridimensionare le immagini è un altro modo. Per esempio:

Convert Tree_4624x3468.jpg -Resize 50% x50% Tree_4624x3468_resize50%.jpg



Come puoi vedere chiaramente, l'immagine che era 4624 × 3468 era 5.70226mib, mentre quello che era 2312 × 1734 è solo 1.56287mib.

L'interruttore Defini

L'interruttore Define è seguito da una chiave e dal suo valore dato.

-Definisce la chiave = value ..

L'elenco dei possibili valori chiave è disponibile su https: // imagemagick.org/script/defines.PHP.

Per PNG, puoi usare PNG: Compression-Level = Value. Il valore può essere qualsiasi cosa da 0 a 9. Un valore di 0 ti fornirà la minima compressione, ma è veloce e un valore di 9 ti fornirà la migliore compressione ma è il più lento. Qualsiasi cosa in mezzo va anche.

Per esempio:

Convert Tree_4624x3468.png -define png: compressione -livello = 9 albero_4624x3468_compression9.png



Nella maggior parte dei casi, ciò che un programmatore desidera è impostare una dimensione massima per una foto. Quindi, supponiamo per un'istanza che si desidera impostare una dimensione massima per una foto. È possibile utilizzare l'interruttore Defini per farlo.

-Define jpeg: extent = size

Convert Tree_4624x3468.jpg -define jpeg: estensione = 1MB albero_4624x3468_extent1mb.jpg



Come puoi vedere nell'immagine sopra, lo ha impostato su una risoluzione di 4624 × 3468 e una dimensione di 0.897mib. Quindi, come hai richiesto, ImageMagick ha creato una foto inferiore alla dimensione massima di 1 MB.

Interruttore a strisce

Le foto che scattiamo con le telecamere sono dotate di metadati. La rimozione dei metadati può anche chiarire un po 'di spazio. In ImageMagick, lo facciamo usando l'interruttore a strisce.

Convert Tree_4624x3468.jpg -strip albero_strip.jpg



Qui, come puoi vedere, la foto originale è 4624 × 3468 e 5.7mib. Ma l'immagine che ha avuto i suoi metadati è ridotta è 4.65mib.

Interruttore dello spazio colorato

Puoi anche provare a cambiare lo spazio Colors. In questo primo istanza, lo trasformerò grigio.

Convert Tree_4624x3468.JPG -Colorspace Grey Tree_Gray.JPG -Quality 75



Come puoi vedere, la riduzione della dimensione dell'immagine non è troppo grande, ma c'è una riduzione - da 5.70226mib a 4.44997mib.

In alternativa, ho anche provato quanto segue:

Convert Tree_4624x3468.png -colorspace grigio albero_graypng.png



Nel caso di un PNG, la mia foto originale, ovvero 4624 × 3468, è 22.42mib, ma quando lo giro grigio, diventa 8.88mib.

Interruttore di colori

Puoi anche scegliere di modificare il numero di colori utilizzati. In questo caso particolare, userò solo 16 colori su un PNG.

Convert Tree_4624x3468.PNG -Colors 16 Tree_4624x3468_16Colors.png



Il PNG originale era 4624 × 3468 e 22.42mib. Tuttavia, quando ho cambiato i colori in soli 16, l'immagine è diventata 4.27mib di dimensioni. E la foto sembra così:


albero_4624x3468_16Colors.png

Utilizzando più switch

Ora, non devi usare un singolo interruttore su una foto! Puoi combinare tutti gli interruttori che vuoi in una foto.

Quindi, nell'esempio 1, farò una foto di un albero. Questa foto originale è 4624 × 3468 e 22.42mib di dimensioni, e userò più switch e vedrò dove mi porta.

Convert Tree_4624x3468.png -strip -Resize 75% x75% -define png: livello compressione = 9 -Colorspace Grey Tree_4624x3468_ReducedSize.png



Quindi questo PNG, con una dimensione originale di 22.42mib, trasformato in una foto di 5.3mib. L'immagine risultante è di circa il 23% delle dimensioni originali.

Quindi poi, diamo un'occhiata a un JPG.

Convert Tree_4624x3468.JPG -Quality 75 -Resize 75% x75% -Strip -Colors 16 Tree_4624x3468_Redoudedsize.jpg



Quindi, qui, per il jpg, siamo passati da una dimensione originale di 5.7mib a circa 2.2mib per un'immagine colorata.

Ma se non fosse colorato:

Convert Tree_4624x3468.JPG -Quality 75 -Resize 75% x75% -Strip -Colorspace Grey Tree_4624x3468_Redoudedsize.jpg



Qui, siamo passati da una dimensione originale di 5.7mib a 1.6mib per un'immagine grigia.

Se lo avessi voluto, avresti potuto impostare anche un limite massimo sulle dimensioni. Il punto è che puoi ridurre le dimensioni se ci si fissa davvero.

Conclusione

Quando scriviamo codice per uno scopo particolare, tendiamo anche a usare le immagini e, a volte, non possiamo permetterci di avere immagini di dimensioni troppo grandi. In tali casi, l'obiettivo principale del programmatore è trovare un compromesso tra le dimensioni dell'immagine e la qualità dell'immagine. Non vogliamo usare immagini di qualità troppo bassa, ma non possiamo nemmeno permetterci di avere immagini di grandi dimensioni. Quindi, abbiamo bisogno di modi per ridurre le dimensioni dell'immagine. ImageMagick offre una varietà di modi per ridurre le dimensioni dell'immagine sotto forma di vari interruttori: qualità, ridimensionamento, definizione, ecc. Puoi usarne uno o più per regolare le dimensioni dell'immagine.