4 maneres de convertir per lots el vostre PNG a JPG i viceversa


En informàtica, el processament per lots és l'execució d'una sèrie de tasques en un programa de manera no interactiva. En aquesta guia us oferirem 4 maneres senzilles de convertir per lots diverses imatges .PNG a .JPG i viceversa utilitzant les eines de línia d'ordres de Linux.

Utilitzarem l'eina de línia d'ordres de conversió en tots els exemples, però també podeu fer servir mogrify per aconseguir-ho.

La sintaxi per utilitzar convert és:

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

I per mogrify és:

$ mogrify options input-file

Nota: Amb mogrify, el fitxer d'imatge original es substitueix pel nou fitxer d'imatge de manera predeterminada, però és possible evitar-ho mitjançant determinades opcions que podeu trobar a la pàgina de manual.

A continuació es mostren les diferents maneres de convertir per lots totes les imatges .PNG al format .JPG, si voleu convertir .JPG a .PNG, podeu modificar les ordres segons les vostres necessitats.

1. Converteix PNG a JPG utilitzant les ordres 'ls' i 'xargs'

L'ordre ls us permet llistar totes les vostres imatges png i els xargs permeten crear i executar una ordre de conversió des de l'entrada estàndard per convertir totes les imatges .png a .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"'

Explicació sobre les opcions utilitzades a l'ordre anterior.

  1. -1: la marca indica a ls que llisti una imatge per línia.
  2. -n: especifica el nombre màxim d'arguments, que és 1 per al cas.
  3. -c: indica a bash que executi l'ordre donada.
  4. $ {0%.png}.jpg: estableix el nom de la nova imatge convertida, el signe % ajuda a eliminar l'extensió de fitxer antiga.

Vaig utilitzar l'ordre ls -ltr per llistar tots els fitxers per data i hora modificades.

De la mateixa manera, podeu utilitzar l'ordre anterior per convertir totes les vostres imatges .jpg a .png ajustant l'ordre anterior.

2. Converteix PNG a JPG mitjançant l'ordre Paral·lel de GNU

GNU Parallel permet a un usuari crear i executar ordres de l'intèrpret d'ordres des d'una entrada estàndard en paral·lel. Assegureu-vos que teniu GNU Parallel instal·lat al vostre sistema, en cas contrari instal·leu-lo mitjançant les ordres adequades a continuació:

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

Un cop instal·lada la utilitat paral·lela, podeu executar l'ordre següent per convertir totes les imatges .png al format .jpg des de l'entrada estàndard.

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

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

On,

  1. {}: línia d'entrada que és una cadena de substitució substituïda per una línia completa llegida des de la font d'entrada.
  2. {.}: línia d'entrada menys extensió.
  3. :::: especifica la font d'entrada, és a dir, la línia d'ordres de l'exemple anterior on *png o *jpg és l'argument.

Alternativament, també podeu utilitzar ls i ordres paral·leles junts per convertir per lots totes les vostres imatges tal com es mostra:

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

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

3. Converteix PNG a JPG utilitzant l'ordre for loop.

Per evitar l'enrenou d'escriure un script d'intèrpret d'ordres, podeu executar un bucle for des de la línia d'ordres de la següent manera:

----------- 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'

Descripció de cada opció utilitzada a l'ordre anterior:

  1. -c permet l'execució de la instrucció del bucle for entre cometes simples.
  2. La variable d'imatge és un comptador del nombre d'imatges del directori.
  3. Per a cada operació de conversió, l'ordre echo informa a l'usuari que una imatge png s'ha convertit al format jpg i viceversa a la línia $image convertida a $ {image%.png}.jpg.
  4. li>
  5. \$ {image%.png}.jpg crea el nom de la imatge convertida, on % elimina l'extensió del format d'imatge antic.

4. Converteix PNG a JPG mitjançant Shell Script

Si no voleu embrutar la vostra línia d'ordres com a l'exemple anterior, escriviu un petit script com aquest:

Nota: intercanvieu adequadament les extensions .png i .jpg com a l'exemple següent per a la conversió d'un format a un altre.

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

Deseu-lo com a convert.sh i feu que l'script sigui executable i després executeu-lo des del directori que conté les vostres imatges.

$ chmod +x convert.sh
$ ./convert.sh

En resum, vam cobrir algunes maneres importants de convertir per lots imatges .png al format .jpg i viceversa. Si voleu optimitzar imatges, podeu consultar la nostra guia que mostra com comprimir imatges png i jpg a Linux.

També podeu compartir amb nosaltres qualsevol altre mètode, incloses les eines de línia d'ordres de Linux per convertir imatges d'un format a un altre al terminal, o fer una pregunta a la secció de comentaris a continuació.