tl;dr
Per chi vuole solo i comandi più semplici:
Convertire e tenere i file originali:
mogrify -format jpg *.png
Convertire e rimuovere i file originali:
mogrify -format jpg *.png && rm *.png
``` ```
bar.png
foo.png
foobar.jpg
Batch Converting Explained
Un po’ tardi per la festa, ma giusto per chiarire tutta la confusione per qualcuno che potrebbe non essere molto a suo agio con cli, ecco un riferimento e una spiegazione molto semplice.
Esempio di directory
mogrify -format jpg *.png
``` ```
bar.png
bar.jpg
foo.png
foo.jpg
foobar.jpg
Simple Convert
Mantiene tutti i file png originali e crea file jpg.
mogrify -format jpg *.png && rm *.png
Risultato
bar.jpg
foo.jpg
foobar.jpg
Spiegazione
- mogrify fa parte della suite di strumenti ImageMagick per l'elaborazione delle immagini.
- mogrify elabora le immagini in place, cioè il file originale viene sovrascritto, ad eccezione dell'opzione
-format
. (Da il sito : This tool is similar to convert except that the original image file is overwritten (unless you change the file suffix with the -format option)
)
- L'opzione
- format
specifica che si cambierà il formato, e il prossimo argomento deve essere il tipo (in questo caso, jpg).
- Infine,
*.png
è il file di input (tutti i file che terminano in .png).
Converti e rimuovi
Converte tutti i file png in jpg, rimuove l'originale.
for i in *.png; do mogrify -format jpg "$i" && rm "$i"; echo "$i converted to ${i%.*}.jpg"; done
Risultato
find . -iname '*.png' | while read i; do mogrify -format jpg "$i" && rm "$i"; echo "Converted $i to ${i%.*}.jpg"; done
``` ```
n=0; find . -iname '*.png' | while read i; do mogrify -format jpg "$i" && rm "$i"; fn="all/$((n++)).jpg"; mv "${i%.*}.jpg" "$fn"; echo "Moved $i to $fn"; done
Spiegazione
- La prima parte è esattamente come sopra, creerà nuovi file jpg.
- Il
&&
è un operatore booleano. In breve:
- Quando un programma termina, restituisce uno stato di uscita. Uno stato di
0
significa nessun errore.
- Poiché
&&
esegue valutazione di corto circuito , la parte giusta sarà eseguita solo se non ci sono stati errori. Questo è utile perché si potrebbe non voler cancellare tutti i file originali se ci fosse un errore di conversione.
- Il comando
rm
cancella i file.
Fancy Stuff
Ora ecco alcune chicche per le persone che sono a proprio agio con il cli.
Se si desidera un po’ di output durante la conversione dei file:
&001 &001
Convertire tutti i file png in tutte le sottodirectory e dare output per ognuno:
&001 &001
Convertire tutti i file png in tutte le sottodirectory, mettere tutti i jpg risultanti nella directory all
, numerarli, rimuovere i file png originali e visualizzare l'output per ogni file mentre avviene:
&001