Pesquisa de site

4 maneiras de converter em lote seu PNG para JPG e vice-versa


Na computação, o processamento em lote é a execução de uma série de tarefas em um programa de forma não interativa. Neste guia, ofereceremos 4 maneiras simples de converter em lote várias imagens .PNG para .JPG e vice-versa usando ferramentas de linha de comando do Linux.

Usaremos a ferramenta de linha de comando convert em todos os exemplos, no entanto, você também pode usar mogrify para conseguir isso.

A sintaxe para usar convert é:

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

E para mogrify é:

mogrify options input-file

Nota: Com mogrify, o arquivo de imagem original é substituído pelo novo arquivo de imagem por padrão, mas é possível evitar isso, usando certas opções que você pode encontrar na página de manual.

Abaixo estão as várias maneiras de converter em lote todas as suas imagens .PNG para o formato .JPG, se você deseja converter .JPG para .PNG, você pode modificar os comandos de acordo com suas necessidades.

1. Converta PNG para JPG usando os comandos ‘ls’ e ‘xargs’

O comando ls permite listar todas as suas imagens png e xargs possibilita construir e executar um comando convert a partir da entrada padrão para converter todas imagens .png para .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"'

Explicação sobre as opções usadas no comando acima.

  1. -1 – flag diz ao ls para listar uma imagem por linha.
  2. -n – especifica o número máximo de argumentos, que é 1 para o caso.
  3. -c – instrui o bash a executar o comando fornecido.
  4. $ {0%.png}.jpg – define o nome da nova imagem convertida, o sinal % ajuda a remover a extensão de arquivo antiga.

Usei o comando ls -ltr para listar todos os arquivos por data e hora de modificação.

Da mesma forma, você pode usar o comando acima para converter todas as suas imagens .jpg em .png ajustando o comando acima.

2. Converta PNG para JPG usando o comando ‘Paralelo’ do GNU

GNU Parallel permite que um usuário crie e execute comandos shell a partir de entrada padrão em paralelo. Certifique-se de ter o GNU Parallel instalado em seu sistema, caso contrário instale-o usando os comandos apropriados abaixo:

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

Depois de instalar o utilitário Parallel, você pode executar o seguinte comando para converter todas as imagens .png para o formato .jpg da entrada padrão.

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

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

Onde,

  1. {} – linha de entrada que é uma string de substituição substituída por uma linha completa lida da fonte de entrada.
  2. {.} – linha de entrada menos extensão.
  3. ::: – especifica a fonte de entrada, que é a linha de comando do exemplo acima, onde *png ou *jpg é o argumento.

Alternativamente, você também pode usar os comandos ls e parallel juntos para converter em lote todas as suas imagens, conforme mostrado:

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

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

3. Converta PNG para JPG usando o comando ‘for loop’

Para evitar a confusão de escrever um script de shell, você pode executar um for loop na linha de comando da seguinte maneira:

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

Descrição de cada opção usada no comando acima:

  1. -c permite a execução da instrução do loop for entre aspas simples.
  2. A variável image é um contador do número de imagens no diretório.
  3. Para cada operação de conversão, o comando echo informa ao usuário que uma imagem png foi convertida para o formato jpg e vice-versa na linha $image convertida para & #36 {image%.png}.jpg ”.
  4. “$ {image%.png}.jpg” cria o nome da imagem convertida, onde % remove a extensão do formato de imagem antigo.

4. Converta PNG para JPG usando Shell Script

Se você não quiser sujar sua linha de comando como no exemplo anterior, escreva um pequeno script como este:

Nota: troque adequadamente as extensões .png e .jpg como no exemplo abaixo para conversão de um formato para outro.

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

Salve-o como convert.sh e torne o script executável e execute-o no diretório que contém suas imagens.

chmod +x convert.sh
./convert.sh

Em resumo, cobrimos algumas maneiras importantes de converter em lote imagens .png para o formato .jpg e vice-versa. Se você deseja otimizar imagens, pode consultar nosso guia que mostra como compactar imagens png e jpg no Linux.

Você também pode compartilhar conosco quaisquer outros métodos, incluindo ferramentas de linha de comando do Linux para converter imagens de um formato para outro no terminal, ou fazer uma pergunta através da seção de comentários abaixo.