Idioma
Categoria
Pesquisar

Como converter imagens para WebP usando a linha de comando

Descubra como converter imagens JPG, PNG e TIFF para WebP via terminal no Linux, com a possibilidade de processar várias imagens ao mesmo tempo. Reduza o tamanho sem perder qualidade!

Como converter imagens para WebP usando a linha de comando
Em Terminal Por Rudi Drusian Lange
Publicado em
Última atualização

Introdução

WebP é um formato moderno para arquivos de imagem, gratuito e de código aberto, desenvolvido pelo Google parar suportar compressão com e sem perda de qualidade, com o objetivo de otimizar a exibição de imagens em sites na internet.

As imagens são responsáveis pela maior parte dos dados transferidos na maioria dos sites, o que torna o tamanho dos arquivos de imagens um fator crucial para uma navegação rápida e fluída, especialmente em dispositivos móveis.

Imagens no formato WebP são significativamente menores em tamanho do que as no formato JPG, mesmo em níveis similares de compressão com perda, mantendo a mesma qualidade visual. Além disso, diferentemente do JPG, o WebP suporta transparência (canal alpha), uma característica que antes era exclusiva de formatos como o PNG, mas com a vantagem de gerar arquivos consideravelmente menores.

Essa combinação de menor tamanho de arquivo e maior flexibilidade torna o WebP uma excelente escolha para melhorar o desempenho e a qualidade de sites na internet.

Instalando o cwebp no Linux

O comando cwebp será utilizado para a conversão de imagens. Para instalá-lo, execute o comando apropriado conforme a sua distribuição:

# bash

No Ubuntu/Debian:
sudo apt install webp

No Fedora:
sudo dnf install webp

No Arch Linux:
sudo pacman -S webp

No Slackware:
sudo slackpkg install libwebp

Convertendo imagens para WebP

O comando cwebp suporta a conversão de imagens a partir dos formatos PNG, JPEG, TIFF e WebP. Vale ressaltar que arquivos PNG e WebP animados não são suportados.

Convertendo uma imagem JPG para WebP:

# bash

cwebp -q 80 nome-da-imagem.jpg -o nome-da-imagem.webp

Convertendo uma imagem PNG para WebP:

# bash

cwebp -q 80 nome-da-imagem.png -o nome-da-imagem.webp

Nos exemplos anteriores:

  • -q 80 Define a qualidade da imagem final em WebP, com valores de 0 a 100.
  • -o Especifica o nome do arquivo WebP que será gerado após a conversão.

Exemplo prático

Neste exemplo, vamos converter duas imagens: uma em formato JPG chamada ilustracao-01.jpg e outra em formato PNG chamada ilustracao-02.png, para o formato WebP. Listando os arquivos originais:

# bash

ls -lh

total 716K
-rw-r--r-- 1 rudi users 381K Feb  6 09:53 ilustracao-01.jpg
-rw-r--r-- 1 rudi users 329K Feb  6 10:00 ilustracao-02.png

Utilizaremos uma qualidade de 60%, o que proporcionará uma excelente compressão, sem que a diferença visual seja perceptível para muitas imagens.

Convertendo a imagem ilustracao-01.jpg para WebP:

# bash

cwebp -q 60 ilustracao-01.jpg -o ilustracao-01.webp

Saving file 'ilustracao-01.webp'
File:      ilustracao-01.jpg
Dimension: 1400 x 800
Output:    136206 bytes Y-U-V-All-PSNR 37.51 36.24 36.67   37.13 dB
           (0.97 bpp)
block count:  intra4:       3897  (88.57%)
              intra16:       503  (11.43%)
              skipped:         1  (0.02%)
bytes used:  header:            313  (0.2%)
             mode-partition:  17761  (13.0%)
 Residuals bytes  |segment 1|segment 2|segment 3|segment 4|  total
    macroblocks:  |       8%|      30%|      41%|      21%|    4400
      quantizer:  |      45 |      38 |      32 |      21 |
   filter level:  |      14 |       8 |      41 |      38 |

Verificando o tamanho do arquivo após a conversão:

# bash

ls -lh ilustracao-01.*

-rw-r--r-- 1 rudi users 381K Feb  6 09:53 ilustracao-01.jpg
-rw-r--r-- 1 rudi users 134K Feb  6 10:28 ilustracao-01.webp

A compressão atingiu aproximadamente 65%, mantendo a qualidade visual da imagem, como pode ser observado na comparação entre as imagens.

Imagem original no formato JPG ↓

Imagem original no formato JPG

Imagem comprimida no formato WebP ↓

Imagem comprimida no formato WebP

O processo de conversão para imagens PNG segue o mesmo princípio. Vamos agora converter a imagem ilustracao-02.png para o formato WebP:

# bash

cwebp -q 60 ilustracao-02.png -o ilustracao-02.webp

Saving file 'ilustracao-02.webp'
File:      ilustracao-02.png
Dimension: 500 x 500
Output:    19842 bytes Y-U-V-All-PSNR 39.00 39.90 39.83   39.27 dB
           (0.63 bpp)
block count:  intra4:        730  (71.29%)
              intra16:       294  (28.71%)
              skipped:         8  (0.78%)
bytes used:  header:            157  (0.8%)
             mode-partition:   3267  (16.5%)
 Residuals bytes  |segment 1|segment 2|segment 3|segment 4|  total
    macroblocks:  |       4%|      22%|      30%|      44%|    1024
      quantizer:  |      45 |      41 |      34 |      26 |
   filter level:  |      14 |       9 |      21 |      28 |

Verificando o tamanho do arquivo após a conversão:

# bash

ls -lh ilustracao-02.*

-rw-r--r-- 1 rudi users 329K Feb  6 10:00 ilustracao-02.png
-rw-r--r-- 1 rudi users  20K Feb  6 10:56 ilustracao-02.webp

A compressão atingiu incríveis 94%, mantendo uma excelente qualidade visual. Lembre-se, a porcentagem de compressão varia de acordo com a composição da imagem. Imagens com menos cores, como desenhos ou gráficos, tendem a ser mais comprimidas sem perder muita qualidade.

Imagem original no formato PNG ↓

Imagem original no formato PNG

Imagem comprimida no formato WebP ↓

Imagem comprimida no formato WebP

Suporte

O formato WebP é suportado nativamente pelos navegadores Google Chrome, Safari, Firefox, Edge e Opera. Além disso, muitas ferramentas e bibliotecas, incluindo softwares de edição de imagem, já oferecem suporte ao WebP. No entanto, ainda podem existir algumas limitações em certas plataformas ou aplicativos.

O pacote webp também inclui uma ferramenta para decodificação e visualização de imagens WebP usando OpenGL. Para visualizar uma imagem WebP a partir do terminal, use o seguinte comando:

# bash

vwebp ilustracao-01.webp

Convertendo múltiplas imagens

Converter uma única imagem usando a linha de comando, como vimos nos exemplos anteriores, é relativamente simples. No entanto, quando se trata de centenas de imagens, o processo pode ser mais demorado. Para otimizar isso, você pode criar um script que converte várias imagens de uma vez.

Script para conversão em massa:

# bash

for file in *.{jpg,jpeg,png}; do cwebp -q 60 "$file" -o "${file%.*}.webp"; done

Execute o comando acima dentro da pasta onde as imagens a serem convertidas estão localizadas. Este script converterá todas as imagens com extensões JPG, JPEG e PNG para WebP, mantendo o nome original dos arquivos e apenas alterando a extensão para .webp. Os arquivos originais serão preservados.

Explicação do comando:

  1. for file in *.{jpg,jpeg,png}:
    • Itera sobre todos os arquivos no diretório atual com as extensões .jpg, .jpeg e .png.
  2. cwebp -q 60 "$file":
    • Converte a imagem atual $file para WebP com qualidade 60 (ajuste o valor -q conforme necessário).
  3. -o "${file%.*}.webp":
    • Define o nome do arquivo de saída. ${file%.*} remove a extensão do arquivo original (por exemplo, foto.jpg vira foto), e .webp é adicionado ao final.
  4. done
    • Finaliza o loop.

Convertendo imagens de um diretório específico

Se você quiser converter imagens de um diretório específico, basta substituir pasta pelo caminho do diretório desejado:

# bash

for file in pasta/*.{jpg,jpeg,png}; do cwebp -q 60 "$file" -o "${file%.*}.webp"; done

Excluindo as imagens originais após a conversão

Caso queira excluir as imagens originais após a conversão, adicione && rm "$file" ao comando: 

# bash

for file in *.{jpg,jpeg,png}; do cwebp -q 60 "$file" -o "${file%.*}.webp" && rm "$file"; done

Isso removerá cada arquivo original após a conversão bem-sucedida.

Conclusão

O formato WebP se destaca como uma solução moderna e eficiente para a otimização de imagens na web, combinando alta qualidade visual com tamanhos de arquivo significativamente menores. Como vimos neste artigo, a conversão de imagens para WebP pode ser feita de forma rápida e prática usando ferramentas de linha de comando, como o cwebp, disponível na maioria das distribuições Linux.

Além da conversão de imagens, o comando oferece uma ampla gama de opções avançadas. Você pode alterar o modo de compressão, adicionar transparência em imagens com fundo, redimensionar e recortar imagens. Para explorar todas as possibilidades, consulte o manual completo executando o comando man cwebp no terminal.

Comandos simples e scripts automatizados permitem que você converta grandes quantidades de imagens de formatos como JPG, PNG e TIFF para WebP, melhorando o desempenho de sites e aplicações, especialmente em dispositivos móveis e conexões mais lentas.

Se você ainda não experimentou o WebP, agora é o momento ideal para começar. Aproveite as técnicas apresentadas aqui e veja como a adoção desse formato pode trazer benefícios reais para seus projetos.

Referências

Para elaboração deste artigo uma das fontes foi o manual (man page) disponível no Slackware Linux.

Parte do conteúdo deste site, incluindo textos, imagens, gráficos e outros materiais, pode ser gerado ou aprimorado por ferramentas de inteligência artificial (IA). Para mais detalhes sobre o uso de IA, consulte nosso Termo de Uso.