4 formas de convertir por lotes su PNG a JPG y viceversa


En informática, el procesamiento por lotes es la ejecución de una serie de tareas en un programa de forma no interactiva. En esta guía, se le ofrecerán 4 formas sencillas de convertir por lotes varias imágenes .PNG a .JPG y viceversa utilizando herramientas de línea de comandos de Linux.

Usaremos la herramienta de conversión de línea de comandos en todos los ejemplos, sin embargo, también puede hacer uso de mogrify para lograrlo.

La sintaxis para usar convert es:

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

Y para mogrify es:

$ mogrify options input-file

Nota: Con mogrify, el archivo de imagen original se reemplaza con el nuevo archivo de imagen de forma predeterminada, pero es posible evitarlo utilizando ciertas opciones que puede encontrar en la página del manual.

A continuación se muestran las diversas formas de convertir por lotes todas sus imágenes .PNG al formato .JPG , si desea convertir .JPG a .PNG , puede modificar los comandos según sus necesidades.

1. Convierta PNG a JPG mediante los comandos "ls" y "xargs"

El comando ls le permite listar todas sus imágenes png y los xargs hacen posible construir y ejecutar un comando de conversión desde la entrada estándar para convertir todas las imágenes .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ón sobre las opciones utilizadas en el comando anterior.

  1. -1 : el indicador le dice a ls que enumere una imagen por línea.
  2. -n : especifica el número máximo de argumentos, que es 1 para el caso.
  3. -c : le indica a bash que ejecute el comando dado.
  4. & # 36 {0% .png} .jpg : establece el nombre de la nueva imagen convertida, el signo% ayuda a eliminar la extensión de archivo anterior.

Usé el comando ls -ltr para listar todos los archivos por fecha y hora de modificación.

De manera similar, puede usar el comando anterior para convertir todas sus imágenes .jpg a .png ajustando el comando anterior.

2. Convierta PNG a JPG con el comando "Paralelo" de GNU

GNU Parallel permite al usuario construir y ejecutar comandos de shell desde la entrada estándar en paralelo. Asegúrese de tener GNU Parallel instalado en su sistema; de lo contrario, instálelo usando los comandos apropiados a continuación:

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

Una vez instalada la utilidad Parallel, puede ejecutar el siguiente comando para convertir todas las imágenes .png al formato .jpg desde la entrada estándar.

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

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

Dónde,

  1. {} : línea de entrada que es una cadena de reemplazo sustituida por una línea completa leída de la fuente de entrada.
  2. {.} : línea de entrada menos extensión.
  3. ::: : especifica la fuente de entrada, que es la línea de comando para el ejemplo anterior, donde * png o * jpg es el argumento.

Alternativamente, también puede usar ls y los comandos paralelos juntos para convertir por lotes todas sus imágenes como se muestra:

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

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

3. Convierta PNG a JPG con el comando "for loop"

Para evitar el ajetreo de escribir un script de shell, puede ejecutar un for loop desde la línea de comando de la siguiente 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ón de cada opción utilizada en el comando anterior:

  1. -c permite la ejecución de la instrucción de bucle for entre comillas simples.
  2. La variable de imagen es un contador de la cantidad de imágenes en el directorio.
  3. Para cada operación de conversión, el comando echo informa al usuario que una imagen png se ha convertido a formato jpg y viceversa en la línea $image convertida a & # 36 {image% .png} .jpg ”.
  4. "& # 36 {image% .png} .jpg" crea el nombre de la imagen convertida, donde% elimina la extensión del formato de imagen anterior.

4. Convierta PNG a JPG mediante el script de shell

Si no desea ensuciar su línea de comando como en el ejemplo anterior, escriba un pequeño script como este:

Nota: intercambie adecuadamente las extensiones .png y .jpg como en el ejemplo siguiente para la conversión de un formato a otro.

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

Guárdelo como convert.sh y haga que el script sea ejecutable y luego ejecútelo desde el directorio que tiene sus imágenes.

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

En resumen, cubrimos algunas formas importantes de convertir por lotes imágenes .png al formato .jpg y viceversa. Si desea optimizar las imágenes, puede consultar nuestra guía que muestra cómo comprimir imágenes png y jpg en Linux.

También puede compartir con nosotros cualquier otro método, incluidas las herramientas de línea de comandos de Linux para convertir imágenes de un formato a otro en el terminal, o hacer una pregunta a través de la sección de comentarios a continuación.