Pesquisa de site

Como otimizar e compactar imagens JPEG ou PNG na linha de comando do Linux


Você tem muitas imagens e deseja otimizá-las e compactá-las sem perder sua qualidade original antes de enviá-las para qualquer nuvem ou armazenamento local? Existem muitos aplicativos GUI disponíveis que o ajudarão a otimizar as imagens. No entanto, aqui estão dois utilitários de linha de comando simples para otimizar imagens:

  1. jpegoptim – é um utilitário para otimizar/compactar arquivos JPEG sem perder qualidade.
  2. OptiPNG – é um pequeno programa que otimiza imagens PNG para tamanhos menores sem perder nenhuma informação.

Usando essas duas ferramentas, você pode otimizar uma ou várias imagens por vez.

Compactar ou otimizar imagens JPEG da linha de comando

jpegoptim é uma ferramenta de linha de comando que pode ser usada para otimizar e compactar arquivos JPEG, JPG e JFIF sem perder sua qualidade real. Esta ferramenta oferece suporte à otimização sem perdas, que se baseia na otimização das tabelas Huffman.

Instale jpegoptim no Linux

Para instalar jpegoptim em seus sistemas Linux, execute o seguinte comando em seu terminal.

No Debian e seus derivados
apt-get install jpegoptim
or
sudo apt-get install jpegoptim
Em sistemas baseados em RedHat

Em sistemas baseados em RPM como RHEL, CentOS, Fedora etc., você precisa instalar e ativar o repositório EPEL ou, alternativamente, você pode instalar o epel repositório diretamente da linha de comando, conforme mostrado:

yum install epel-release
dnf install epel-release    [On Fedora 22+ versions]

Em seguida, instale o programa jpegoptim do repositório conforme mostrado:

yum install jpegoptim
dnf install jpegoptim    [On Fedora 22+ versions]

Como usar o otimizador de imagem Jpegoptim

A sintaxe do jpegoptm é:

jpegoptim filename.jpeg
jpegoptim [options] filename.jpeg

Vamos agora compactar a seguinte imagem tecmint.jpeg, mas antes de otimizar a imagem, primeiro descubra o tamanho real da imagem usando o comando du conforme mostrado.

du -sh tecmint.jpeg 

6.2M	tecmint.jpeg

Aqui o tamanho real do arquivo é 6,2 MB, agora compacte este arquivo executando:

jpegoptim tecmint.jpeg 

Abra a imagem compactada em qualquer aplicativo visualizador de imagens, você não encontrará grandes diferenças. As imagens de origem e compactadas terão a mesma qualidade.

O comando acima otimiza as imagens para o tamanho máximo possível. No entanto, você pode compactar a imagem fornecida em um tamanho específico, mas isso desativa a otimização sem perdas.

Por exemplo, vamos compactar a imagem acima de 5,6MB para cerca de 250k.

jpegoptim --size=250k tecmint.jpeg

Compressão e otimização de imagens JPEG em lote

Você pode perguntar como compactar as imagens em todo o diretório, isso também não é difícil. Vá para o diretório onde você tem as imagens.

tecmint@tecmint ~ $ cd img/
tecmint@tecmint ~/img $ ls -l
total 65184
-rwxr----- 1 tecmint tecmint 6680532 Jan 19 12:21 DSC_0310.JPG
-rwxr----- 1 tecmint tecmint 6846248 Jan 19 12:21 DSC_0311.JPG
-rwxr----- 1 tecmint tecmint 7174430 Jan 19 12:21 DSC_0312.JPG
-rwxr----- 1 tecmint tecmint 6514309 Jan 19 12:21 DSC_0313.JPG
-rwxr----- 1 tecmint tecmint 6755589 Jan 19 12:21 DSC_0314.JPG
-rwxr----- 1 tecmint tecmint 6789763 Jan 19 12:21 DSC_0315.JPG
-rwxr----- 1 tecmint tecmint 6958387 Jan 19 12:21 DSC_0316.JPG
-rwxr----- 1 tecmint tecmint 6463855 Jan 19 12:21 DSC_0317.JPG
-rwxr----- 1 tecmint tecmint 6614855 Jan 19 12:21 DSC_0318.JPG
-rwxr----- 1 tecmint tecmint 5931738 Jan 19 12:21 DSC_0319.JPG

E então execute o seguinte comando para compactar todas as imagens de uma vez.

tecmint@tecmint ~/img $ jpegoptim *.JPG
DSC_0310.JPG 6000x4000 24bit N Exif  [OK] 6680532 --> 5987094 bytes (10.38%), optimized.
DSC_0311.JPG 6000x4000 24bit N Exif  [OK] 6846248 --> 6167842 bytes (9.91%), optimized.
DSC_0312.JPG 6000x4000 24bit N Exif  [OK] 7174430 --> 6536500 bytes (8.89%), optimized.
DSC_0313.JPG 6000x4000 24bit N Exif  [OK] 6514309 --> 5909840 bytes (9.28%), optimized.
DSC_0314.JPG 6000x4000 24bit N Exif  [OK] 6755589 --> 6144165 bytes (9.05%), optimized.
DSC_0315.JPG 6000x4000 24bit N Exif  [OK] 6789763 --> 6090645 bytes (10.30%), optimized.
DSC_0316.JPG 6000x4000 24bit N Exif  [OK] 6958387 --> 6354320 bytes (8.68%), optimized.
DSC_0317.JPG 6000x4000 24bit N Exif  [OK] 6463855 --> 5909298 bytes (8.58%), optimized.
DSC_0318.JPG 6000x4000 24bit N Exif  [OK] 6614855 --> 6016006 bytes (9.05%), optimized.
DSC_0319.JPG 6000x4000 24bit N Exif  [OK] 5931738 --> 5337023 bytes (10.03%), optimized.

Você também pode compactar várias imagens selecionadas de uma só vez:

$ jpegoptim DSC_0310.JPG DSC_0311.JPG DSC_0312.JPG 
DSC_0310.JPG 6000x4000 24bit N Exif  [OK] 6680532 --> 5987094 bytes (10.38%), optimized.
DSC_0311.JPG 6000x4000 24bit N Exif  [OK] 6846248 --> 6167842 bytes (9.91%), optimized.
DSC_0312.JPG 6000x4000 24bit N Exif  [OK] 7174430 --> 6536500 bytes (8.89%), optimized.

Para mais detalhes sobre a ferramenta jpegoptim, confira as páginas de manual.

man jpegoptim 

Compactar ou otimizar imagens PNG da linha de comando

OptiPNG é uma ferramenta de linha de comando usada para otimizar e compactar arquivos PNG (gráficos de rede portáteis) sem perder sua qualidade original.

A instalação e uso do OptiPNG é muito semelhante ao jpegoptim.

Instale OptiPNG no Linux

Para instalar OptiPNG em seus sistemas Linux, execute o seguinte comando em seu terminal.

No Debian e seus derivados
apt-get install optipng
or
sudo apt-get install optipng
Em sistemas baseados em RedHat
yum install optipng
dnf install optipng    [On Fedora 22+ versions]

Nota: Você deve ter o repositório epel ativado em seus sistemas baseados em RHEL/CentOS para instalar o optipng programa.

Como usar o otimizador de imagem OptiPNG

A sintaxe geral de optipng é:

optipng filename.png
optipng [options] filename.png

Vamos compactar a imagem tecmint.png, mas antes de otimizar, primeiro verifique o tamanho real da imagem conforme mostrado:

tecmint@tecmint ~/img $ ls -lh tecmint.png 
-rw------- 1 tecmint tecmint 350K Jan 19 12:54 tecmint.png

Aqui o tamanho real do arquivo da imagem acima é 350K, agora compacte este arquivo executando:

tecmint@tecmint ~/img $ optipng tecmint.png 
OptiPNG 0.6.4: Advanced PNG optimizer.
Copyright (C) 2001-2010 Cosmin Truta.

** Processing: tecmint.png
1493x914 pixels, 4x8 bits/pixel, RGB+alpha
Reducing image to 3x8 bits/pixel, RGB
Input IDAT size = 357525 bytes
Input file size = 358098 bytes

Trying:
  zc = 9  zm = 8  zs = 0  f = 0		IDAT size = 249211
                               
Selecting parameters:
  zc = 9  zm = 8  zs = 0  f = 0		IDAT size = 249211

Output IDAT size = 249211 bytes (108314 bytes decrease)
Output file size = 249268 bytes (108830 bytes = 30.39% decrease)

Como você pode ver na saída acima, o tamanho do arquivo tecmint.png foi reduzido para 30,39%. Agora verifique o tamanho do arquivo novamente usando:

tecmint@tecmint ~/img $ ls -lh tecmint.png 
-rw-r--r-- 1 tecmint tecmint 244K Jan 19 12:56 tecmint.png

Abra a imagem compactada em qualquer aplicativo visualizador de imagens, você não encontrará grandes diferenças entre os arquivos originais e compactados. As imagens de origem e compactadas terão a mesma qualidade.

Compressão e otimização de imagens PNG em lote

Para compactar em lote ou várias imagens PNG de uma vez, basta ir ao diretório onde todas as imagens residem e executar o seguinte comando para compactar.

tecmint@tecmint ~ $ cd img/
tecmint@tecmint ~/img $ optipng *.png

OptiPNG 0.6.4: Advanced PNG optimizer.
Copyright (C) 2001-2010 Cosmin Truta.

** Processing: Debian-8.png
720x345 pixels, 3x8 bits/pixel, RGB
Input IDAT size = 95151 bytes
Input file size = 95429 bytes

Trying:
  zc = 9  zm = 8  zs = 0  f = 0		IDAT size = 81388
                               
Selecting parameters:
  zc = 9  zm = 8  zs = 0  f = 0		IDAT size = 81388

Output IDAT size = 81388 bytes (13763 bytes decrease)
Output file size = 81642 bytes (13787 bytes = 14.45% decrease)

** Processing: Fedora-22.png
720x345 pixels, 4x8 bits/pixel, RGB+alpha
Reducing image to 3x8 bits/pixel, RGB
Input IDAT size = 259678 bytes
Input file size = 260053 bytes

Trying:
  zc = 9  zm = 8  zs = 0  f = 5		IDAT size = 222479
  zc = 9  zm = 8  zs = 1  f = 5		IDAT size = 220311
  zc = 1  zm = 8  zs = 2  f = 5		IDAT size = 216744
                               
Selecting parameters:
  zc = 1  zm = 8  zs = 2  f = 5		IDAT size = 216744

Output IDAT size = 216744 bytes (42934 bytes decrease)
Output file size = 217035 bytes (43018 bytes = 16.54% decrease)
....

Para mais detalhes sobre optipng verifique as páginas de manual.

man optipng

Conclusão

Se você é um webmaster e deseja veicular imagens otimizadas em seu site ou blog, essas ferramentas podem ser muito úteis. Essas ferramentas não apenas economizam espaço em disco, mas também reduzem a largura de banda durante o upload das imagens.

Se você conhece alguma outra maneira melhor de conseguir o mesmo, informe-nos através dos comentários e não se esqueça de compartilhar este artigo em suas redes sociais e nos apoiar.