Converti il ​​batch ImageMagick

Converti il ​​batch ImageMagick
In genere, possiamo scrivere una riga di codice per trasformare un'immagine, che si tratti di ritaglio, ridimensionamento, ecc. Con ImageMagick, è tutto abbastanza semplice. Ma supponiamo per l'istanza che avevamo 1000 foto che dovevano essere modificate, cosa facciamo? Digita il comando 1000 volte? Sarebbe sciocco, giusto? Questo è quando usiamo le conversioni batch. Ciò significa che possiamo essere intelligenti sulla trasformazione 1000 e scrivere al massimo alcune righe di codice per garantire che il processo sia eseguito senza intoppi e facilmente. Fondamentalmente, non dobbiamo scrivere i 1000 comandi. In questo tutorial, impareremo come convertire le immagini in ImageMagick.

Installazione di ImageMagick

Avremo bisogno di ImageMagick per questo processo. Innanzitutto, installiamolo utilizzando la seguente sintassi:

sudo apt-get installa imagemagick

Mogrifica

Supponiamo di avere 1000 foto che hanno tutti ".estensione PNG ". Supponiamo inoltre che vogliamo trasformarli tutti in ".File jpg ".

Ora che abbiamo finito supponendo, possiamo iniziare a scrivere il codice.

mogrify -format jpg *.png

Qui, stiamo dicendo a ImageMagick che ci sono molti ".Immagini png "per usare ognuna con un".estensione PNG ". Diciamo quindi ImageMagick con l'interruttore di formato per trasformare l'immagine in un'immagine JPG. Qui, l'interruttore di formato impedisce che le immagini vengano sovrascritte. In genere, la distinzione tra Mogrify e Convert è che Mogrify sovrascrive i file originali. Ma questo non è il caso quando utilizziamo l'interruttore formato (un'eccezione alla regola).

La parte fantastica di questo piccolo pezzo di codice è che il batch convertirà tutte le immagini che vuoi. Ed è un liner! Tuttavia, in questo caso, salviamo tutti i nuovi file all'interno della stessa cartella dei vecchi file.

Ora, supponiamo che io voglia salvarli in una directory completamente diversa. Abbiamo un sacco di *.jpg e li salviamo in una nuova cartella chiamata NewFolder. Supponiamo inoltre che i file originali siano nella cartella dei download.

(L'idea qui è che tutti i file originali sono nella cartella dei download e creiamo una cartella chiamata NewFolder per scaricare le immagini trasformate.)

Download di CD
Mkdir Newfolder
Mogrify -Format png -quality 100 -path ~/downloads/newfolder *.jpg

Quindi, cosa succede qui? Applichiamo il comando mogrify e aggiungiamo un nuovo switch chiamato percorso. L'interruttore del percorso garantisce che le nuove immagini create siano state scaricate nella cartella specificata (Newfolder).

Ora, supponiamo che abbiamo una combinazione di immagini JPG e immagini PNG e vogliamo trasformarle in JPEG.

mogrify -format jpeg *

In questo caso, invece di specificare quali immagini vogliamo convertire, abbiamo appena messo una stella. La stella significa convertire tutto.

Se ci sono cartelle lì, si bloccherà in qualche modo, quindi usa anche l'interruttore del percorso.

Convertire

Ora, scriviamo qualcosa di un po 'diverso usando il comando convert anziché il comando mogrify (il comando mogrify sovrascrive i file originali).

convertire *.PNG -Resize 1234x1234 RISIZATO-%d.png

Cosa hai notato qui? Abbiamo fatto la conversione batch usando il comando convert. Per rinominare il file, utilizziamo il termine "ridimensionato d d.PNG ". Qual è questo segno "%d" nel nome? Il resto del nome ha senso, giusto? E il "%d" significa numerarli con 0, 1, 2, ecc.

Un altro rapido esempio:

convertire *.PNG -Resize 1234x1234 RIUSIED-%03D.png

Cosa significa "%03d"? Bene, guarda l'output. Lo rinomina con 3 cifre questa volta. Ora, invece di vedere il ridimensionato-0.png, vediamo il ridimensionato.png.

Loop

Puoi anche scrivere i loop.

per f in *.jpg; Converti "$ f" -Quality 85 "$ F".png; Fatto

In questo caso, stiamo ancora usando un liner ma è un po 'più complesso. In questo caso, diciamo che per ogni immagine chiamata f, convertiamo l'immagine e la rinominiamo in “$ f.PNG ". Come avrai notato, se l'immagine viene chiamata "Image1.jpg ", lo rinomina su" Image1.jpg.PNG ". Questo comando è un po 'imperfetto, quindi diamo un'occhiata agli altri modi per rinominare l'immagine.

In precedenza, abbiamo usato il comando Mogrify. Non ha sovrascritto le immagini a causa dell'interruttore di formato. Ma se l'interruttore di formato non fosse stato lì, quando si ridimensionava, ad esempio, avrebbe sovrascritto il file. Quindi, cosa succede se vogliamo usare il comando converti?

per file in *.png; Converti $ File -Resize 1275x1222 RICASIED- $ FILE; Fatto

Proviamo a capire questo comando.

La prima parte del comando è la seguente:

per file in *.png;

IL *.PNG si riferisce a tutti i file PNG. Ciò significa "per ogni singolo file nella pila di file".

Il comando principale è il seguente:

Converti $ file -Resize 1275x1222 RICUSIED- $ FILE

Questa parte prende semplicemente il file $ (un file) e lo ridimensiona utilizzando l'interruttore di ridimension.

Quindi finiamo con Done. Questa parte è abbastanza ovvia.

Abbastanza facile, giusto?

Conclusione

La conversione batch è un processo molto utile. Ci impedisce di dover reimprimere un comando di un milione di volte. In ImageMagick, il modo più semplice per trasformare in batch un milione di immagini è usando il comando mogrify. Tuttavia, se non utilizzato insieme all'interruttore di formato, scrive sull'immagine originale. Ad esempio, se si utilizza il comando mogrify per batch convertire un sacco di immagini per ridimensionarle, sovrascrive le immagini originali. A volte, questo potrebbe non essere quello che vuoi e, in questi casi, puoi ricorrere a scrivere un piccolo script. Lo script stesso è una fodera e puoi usare il comando convert se lo desideri, quindi questa è la parte buona. Ma è un po 'più complesso della più semplice delle conversioni batch fatte usando il comando mogrify. Ad ogni modo, il punto è che non devi più trasformare un'immagine alla volta. Puoi andare avanti con le conversioni batch che possono convertire migliaia e migliaia di immagini in un momento.