Búsqueda de sitios web

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, le ofreceremos 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 línea de comando convert en todos los ejemplos; sin embargo, también puedes utilizar 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 evitar esto al usando ciertas opciones que puedes encontrar en la página de manual.

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

1. Convierta PNG a JPG usando los comandos 'ls' y 'xargs'

El comando ls le permite enumerar todas sus imágenes png y xargs permite crear y ejecutar un comando convert desde la entrada estándar para convertir todas .png imágenes 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: la bandera 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: indica a bash que ejecute el comando dado.
  4. $ {0%.png}.jpg: establece el nombre de la nueva imagen convertida, el signo % ayuda a eliminar la extensión de archivo anterior.

Utilicé el comando ls -ltr para enumerar 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 modificando el comando anterior.

2. Convierta PNG a JPG usando el comando 'Paralelo' de GNU

GNU Parallel permite al usuario crear y ejecutar comandos de shell desde una 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 puedes usar los comandos ls y parallel juntos para convertir por lotes todas tus 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 usando el comando 'for loop'

Para evitar la molestia 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 image es un contador del número 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 al formato jpg y viceversa en la línea $image convertida a & #36 {imagen%.png}.jpg”.
  4. “$ {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 usando Shell Script

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 siguiente ejemplo 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 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 la terminal, o hacer una pregunta a través de la sección de comentarios a continuación.