Shell Script para conversão de imagens em massa

Shell script para conversão de imagens em massa

Você já teve que converter várias imagens, uma a uma, de um formato específico para outro tipo de formato? Como escritor do Blog Tecnosob, muitas vezes preciso trabalhar com imagens no formato .jpg para publicá-las, mas várias delas estão em formato .png. Para usar essas imagens, era necessário abrir um programa de edição e salvar o arquivo no formato desejado.

Quando só temos uma imagem para converter, até que faz sentido usar um programa de edição. No entanto, já imaginou ter que fazer isso para várias imagens ao mesmo tempo? Esse processo manual pode levar um tempo considerável. Por isso, automatizar essa tarefa com um shell script pode ser uma maneira muito mais eficiente de realizar o trabalho, especialmente se você tiver que lidar com um grande número de imagens com frequência.

Como exemplo prático, imagino que você tenha uma pasta cheia de imagens de uma sessão de fotos ou de um projeto onde todas estão no formato .png. Em vez de abrir cada arquivo e salvar manualmente, você pode usar esse script para convertê-las automaticamente, economizando tempo e evitando o trabalho repetitivo.

Eu desenvolvi um shell script simples que, ao ser executado, abre uma janela onde você pode escolher o diretório com as imagens .png. Após selecionar a pasta, o script faz a conversão de todas as imagens .png para .jpg de forma automática, independentemente da quantidade de imagens no diretório.

Detalhes técnicos: Para que o script funcione corretamente, é necessário ter o pacote Zenity instalado no seu sistema. O Zenity permite que você crie caixas de diálogo gráficas, facilitando a interação com o usuário. Este script foi desenvolvido para sistemas operacionais Linux. Se você não tem o Zenity instalado, basta rodar o comando:

sudo apt install zenity

Além disso, o script usa a ferramenta mogrify, que faz parte do pacote ImageMagick. O mogrify é uma ferramenta poderosa para processamento de imagens, permitindo realizar várias operações de forma rápida e automatizada, como redimensionamento, conversão de formatos e até ajustes de qualidade.

No caso deste script, o mogrify é usado para converter as imagens do formato .png para .jpg com o seguinte comando:

mogrify -format jpg "$img"

O mogrify altera o formato das imagens diretamente no diretório selecionado. A opção -format jpg indica que o formato de saída será .jpg. Após a conversão, o script exclui o arquivo original .png com o comando rm "$img", para manter apenas a versão em .jpg.

Abaixo, você encontra o código completo do shell script para conversão de imagens:

#!/bin/bash

# Abrir o diálogo para selecionar o diretório com imagens
IMG_DIR=$(zenity --file-selection --title="Escolha um diretório com imagens" --directory)

# Verificar se o usuário cancelou a seleção
if [[ $? -ne 0 ]]; then
  echo "Operação cancelada."
  exit 1
fi

# Verificar se o diretório foi selecionado
if [[ -z "$IMG_DIR" ]]; then
  echo "Nenhum diretório foi selecionado."
  exit 1
fi

# Navegar até o diretório selecionado
cd "$IMG_DIR" || { echo "Erro ao acessar o diretório $IMG_DIR"; exit 1; }

# Converter todas as imagens .png para .jpg
for img in *.png; do
  # Verificar se há arquivos PNG no diretório
  if [[ ! -e "$img" ]]; then
    echo "Nenhum arquivo PNG encontrado em $IMG_DIR"
    exit 1
  fi

  # Converter para JPG
  mogrify -format jpg "$img" && rm "$img"
done

echo "Conversão concluída!"

Após copiar o código para um arquivo, lembre-se de dar permissão ao mesmo. Por exemplo, digamos que você nomeou o arquivo de converter-imagens.sh. Abra um terminal e digite:

chmod +x converter-imagens.sh

Por fim, para executar o script use o comando:

./converter-imagens.sh

Explicando como o script de conversão de imagens funciona

Vamos entender como o shell script funciona passo a passo:

  1. Selecionando o diretório com Zenity: O script começa usando o comando zenity para abrir uma janela gráfica onde o usuário escolhe o diretório com as imagens .png. O Zenity é uma ferramenta que permite adicionar caixas de diálogo no ambiente Linux, facilitando a interação.
  2. Verificação de cancelamento: O script verifica se o usuário cancelou a seleção do diretório. Caso tenha cancelado, o script imprime “Operação cancelada.” e encerra, para evitar erros na execução sem um diretório válido.
  3. Validação do diretório: Após escolher o diretório, o script confirma que a seleção é válida. Se o diretório não foi selecionado, o script mostra uma mensagem de erro e interrompe a execução.
  4. Navegação até o diretório: O comando cd "$IMG_DIR" altera o diretório atual para o que foi selecionado, garantindo que as operações a seguir sejam feitas no local correto. Caso haja algum problema ao acessar o diretório, o script emite um erro.
  5. Conversão das imagens: Em um loop for, o script examina cada arquivo .png dentro do diretório. Se não encontrar imagens com extensão .png, ele emite uma mensagem informando que não há arquivos do tipo.
  6. Conversão para .jpg: Se houver imagens .png, o script usa o comando mogrify para convertê-las para o formato .jpg. Após a conversão, o script exclui o arquivo .png original, mantendo apenas a versão em .jpg.
  7. Mensagem de conclusão: Por fim, o script exibe uma mensagem de “Conversão concluída!” indicando que o processo terminou com sucesso.

Este processo automatiza uma tarefa repetitiva, economizando tempo e esforço.

Observação:

Caso você queira manter as imagens originais, você pode alterar a linha de conversão para algo como:

mogrify -format jpg "$img"

Formatos de imagens suportados pelo ImageMagick

Formatos de Imagem Bitmap

  • BMP (Bitmap Image File)
  • ICO (Icon Format)
  • PNG (Portable Network Graphics)
  • GIF (Graphics Interchange Format)
  • TIFF (Tagged Image File Format)
  • XPM (X PixMap)
  • PBM (Portable Bitmap)
  • PGM (Portable GrayMap)
  • PPM (Portable PixelMap)

Formatos Vetoriais

  • SVG (Scalable Vector Graphics)
  • EPS (Encapsulated PostScript)
  • PDF (Portable Document Format)
  • PS (PostScript)

Outros Formatos

  • JPEG (Joint Photographic Experts Group)
  • WebP (Web Picture format)
  • HEIC (High Efficiency Image Coding)
  • RAW (Raw Image Data)
  • DNG (Digital Negative)
  • AVIF (AV1 Image File Format)

Formatos de Imagens de Alta Qualidade

  • FITS (Flexible Image Transport System)
  • EXR (OpenEXR)
  • PICT (Macintosh Picture Format)

Formatos de Imagens de Animação

  • APNG (Animated PNG)
  • MNG (Multiple-image Network Graphics)

A lista acima abrange a maioria dos formatos de imagens que o ImageMagick pode processar, o que o torna bastante versátil. Caso você queira visualizar todos os formatos de imagens suportados pelo ImageMagick, abra um terminal e digite o comando:

convert -list format

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *