Ricerca nel sito web

4 modi per convertire in batch i tuoi PNG in JPG e viceversa


Nell'informatica, l'elaborazione batch è l'esecuzione di una serie di attività in un programma in modo non interattivo. In questa guida ti offrirai 4 semplici modi per convertire in batch diverse immagini .PNG in .JPG e viceversa utilizzando gli strumenti da riga di comando di Linux.

Utilizzeremo lo strumento da riga di comando convert in tutti gli esempi, tuttavia, puoi anche utilizzare mogrify per raggiungere questo obiettivo.

La sintassi per utilizzare convert è:

convert input-option input-file output-option output-file

E per mogrify è:

mogrify options input-file

Nota: con mogrify, il file immagine originale viene sostituito con il nuovo file immagine per impostazione predefinita, ma è possibile impedire ciò, utilizzando alcune opzioni che puoi trovare nella pagina man.

Di seguito sono riportati i vari modi per convertire in batch tutte le immagini .PNG nel formato .JPG, se desideri convertire .JPG in .PNG, puoi modificare i comandi in base alle tue esigenze.

1. Converti PNG in JPG utilizzando i comandi "ls" e "xargs".

Il comando ls ti consente di elencare tutte le tue immagini png e xargs rende possibile creare ed eseguire un comando convert dallo standard input per convertire tutte Immagini .png in .jpg.

----------- Convert PNG to JPG ----------- 
ls -1 *.png | xargs -n 1 bash -c 'convert "$0" "${0%.png}.jpg"'

----------- Convert JPG to PNG ----------- 
ls -1 *.jpg | xargs -n 1 bash -c 'convert "$0" "${0%.jpg}.png"'

Spiegazione delle opzioni utilizzate nel comando precedente.

  1. -1 – flag indica a ls di elencare un'immagine per riga.
  2. -n – specifica il numero massimo di argomenti, che è 1 per ogni caso.
  3. -c – ordina a bash di eseguire il comando indicato.
  4. $ {0%.png}.jpg – imposta il nome della nuova immagine convertita, il segno % aiuta a rimuovere la vecchia estensione del file.

Ho usato il comando ls -ltr per elencare tutti i file in base alla data e all'ora modificate.

Allo stesso modo, puoi utilizzare il comando precedente per convertire tutte le tue immagini .jpg in .png modificando il comando precedente.

2. Converti PNG in JPG utilizzando il comando GNU "Parallel".

GNU Parallel consente a un utente di creare ed eseguire comandi shell da input standard in parallelo. Assicurati di avere GNU Parallel installato sul tuo sistema, altrimenti installalo utilizzando i comandi appropriati di seguito:

sudo apt-get install parallel     [On Debian/Ubuntu systems]
sudo yum install parallel         [On RHEL/CentOS and Fedora]

Una volta installata l'utilità Parallel, puoi eseguire il seguente comando per convertire tutte le immagini .png nel formato .jpg dall'input standard.

----------- Convert PNG to JPG ----------- 
parallel convert '{}' '{.}.jpg' ::: *.png

----------- Convert JPG to PNG -----------
parallel convert '{}' '{.}.png' ::: *.jpg

Dove,

  1. {} – riga di input che è una stringa sostitutiva sostituita da una riga completa letta dalla sorgente di input.
  2. {.} – riga di input meno estensione.
  3. ::: – specifica l'origine di input, ovvero la riga di comando per l'esempio sopra dove *png o *jpg è l'argomento.

In alternativa, puoi anche utilizzare i comandi ls e parallelo insieme per convertire in batch tutte le tue immagini come mostrato:

----------- Convert PNG to JPG ----------- 
ls -1 *.png | parallel convert '{}' '{.}.jpg'

----------- Convert JPG to PNG -----------
ls -1 *.jpg | parallel convert '{}' '{.}.png'

3. Converti PNG in JPG utilizzando il comando "for loop".

Per evitare il fastidio di scrivere uno script di shell, puoi eseguire un ciclo for dalla riga di comando come segue:

----------- Convert PNG to JPG ----------- 
bash -c 'for image in *.png; do convert "$image" "${image%.png}.jpg"; echo “image $image converted to ${image%.png}.jpg ”; done'

----------- Convert JPG to PNG -----------
bash -c 'for image in *.jpg; do convert "$image" "${image%.jpg}.png"; echo “image $image converted to ${image%.jpg}.png ”; done'

Descrizione di ciascuna opzione utilizzata nel comando precedente:

  1. -c consente l'esecuzione dell'istruzione del ciclo for tra virgolette singole.
  2. La variabile immagine è un contatore per il numero di immagini nella directory.
  3. Per ogni operazione di conversione, il comando echo informa l'utente che un'immagine png è stata convertita nel formato jpg e viceversa nella riga $immagine convertita in & #36 {image%.png}.jpg ".
  4. "$ {image%.png}.jpg" crea il nome dell'immagine convertita, dove % rimuove l'estensione del vecchio formato immagine.

4. Converti PNG in JPG utilizzando lo script Shell

Se non vuoi sporcare la riga di comando come nell'esempio precedente, scrivi un piccolo script in questo modo:

Nota: scambia opportunamente le estensioni .png e .jpg come nell'esempio seguente per la conversione da un formato ad un altro.

#!/bin/bash
#convert
for image in *.png; do
        convert  "$image"  "${image%.png}.jpg"
        echo “image $image converted to ${image%.png}.jpg ”
done
exit 0 

Salvalo come convert.sh e rendi eseguibile lo script, quindi eseguilo dalla directory che contiene le tue immagini.

chmod +x convert.sh
./convert.sh

In sintesi, abbiamo trattato alcuni modi importanti per convertire in batch le immagini .png nel formato .jpg e viceversa. Se vuoi ottimizzare le immagini, puoi consultare la nostra guida che mostra come comprimere immagini png e jpg in Linux.

Puoi anche condividere con noi qualsiasi altro metodo, inclusi gli strumenti da riga di comando di Linux per convertire le immagini da un formato a un altro sul terminale, o porre una domanda tramite la sezione commenti qui sotto.