Como Comprimir Imagens em Poucas Linhas de Código com Pillow

Neste artigo, você vai aprender como usar Python com a biblioteca Pillow para criar um script simples que comprime imagens de forma automática e eficiente, sem depender de sites pagos. Vamos explorar dois métodos de compressão e como aplicá-los a várias imagens em uma pasta.

Comprimir imagens é uma tarefa essencial para quem trabalha com sites, aplicativos ou precisa economizar espaço em disco. Muitas vezes, imagens grandes, como as de 50 MB, podem ser reduzidas para 5 MB ou menos, mantendo uma qualidade aceitável. Neste artigo, você vai aprender como usar Python com a biblioteca Pillow para criar um script simples que comprime imagens de forma automática e eficiente, sem depender de sites pagos. Vamos explorar dois métodos de compressão e como aplicá-los a várias imagens em uma pasta.

Para receber por e-mail a base de dados e o prompt utilizados neste guia, preencha:

Não vamos te encaminhar nenhum tipo de SPAM! A Hashtag Treinamentos é uma empresa preocupada com a proteção de seus dados e realiza o tratamento de acordo com a Lei Geral de Proteção de Dados (Lei n. 13.709/18). Qualquer dúvida, nos contate.

O que é a biblioteca Pillow e como instalá-la?

A biblioteca Pillow é uma ferramenta muito útil para editar imagens rapidamente em Python. Ela permite abrir, fazer alterações e salvar as imagens em diferentes formatos. Aqui nós vamos ver sua funcionalidade específica para compressão.

Como instalar o Pillow?
Para usar o Pillow, você precisa instalá-lo via terminal com o seguinte comando:

Codigo
pip install Pillow

Após a instalação, você pode importar a biblioteca no seu código Python usando:

Python
from PIL import Image
import os

Como configurar uma pasta para compressão de imagens?

Antes de comprimir imagens, é importante organizar os arquivos. O script que vamos criar pode processar todas as imagens dentro de uma pasta específica, tornando o processo automático.

Passos para configurar a pasta:

  1. Crie uma pasta chamada imagens no mesmo diretório do seu script Python.
  2. Coloque as imagens que deseja comprimir nessa pasta.
  3. Use a biblioteca os para listar todos os arquivos da pasta.

Aqui está o código inicial para configurar a pasta e listar os arquivos:

Python
import os
pasta = "imagens"
lista_arquivos = os.listdir(pasta)

O que esse código faz?
O método os.listdir() retorna uma lista com os nomes de todos os arquivos na pasta especificada. Isso permite que o script processe cada imagem automaticamente.

Ícone PythonPython Impressionador

Você vai aprender a linguagem de Programação que mais cresce no Mundo para fazer automações incríveis, desenvolver sites, fazer análises de dados, trabalhar com Ciência de Dados, Inteligência Artificial, mesmo que você nunca tenha tido nenhum contato com Programação na vida.

Começar agoraSeta para a direita
Fundo PythonTelas Python
Luz Python

Como comprimir imagens usando o método simples do Pillow?

O Pillow oferece uma forma fácil de comprimir imagens usando o parâmetro optimize=True.

Este método é ideal para imagens que já são relativamente eficientes, mas pode não reduzir muito o tamanho.

Como funciona a compressão simples?
Você abre a imagem com Image.open() e a salva com o parâmetro optimize=True.

O script a seguir percorre todas as imagens da pasta e cria versões otimizadas com o prefixo "reduzido_":

Python
for nome_arquivo in lista_arquivos:
    caminho_arquivo = os.path.join(pasta, nome_arquivo)
    imagem = Image.open(caminho_arquivo)
    novo_nome = os.path.join(pasta, f"reduzido_{nome_arquivo}")
    imagem.save(novo_nome, optimize=True)

Resultados esperados:
Para imagens já otimizadas (como PNGs gerados por ferramentas de IA), a redução pode ser pequena, entre 5% e 10%.

Por exemplo:

ImagemTamanho OriginalTamanho ReduzidoRedução
tigre.png3.3 MB3.1 MB~6%
cachorro.png2.9 MB2.7 MB~7%
raposa.png2.9 MB2.8 MB~3%

Como obter uma compressão mais intensa com paleta de cores?

Para reduzir significativamente o tamanho das imagens, você pode converter as imagens para uma paleta de cores limitada (256 cores) usando o modo P do Pillow. Este método sacrifica um pouco da qualidade, mas reduz drasticamente o tamanho do arquivo.

Como funciona a compressão com paleta de cores?
O Pillow converte a imagem para o modo P, que usa uma paleta de 256 cores, e pode usar uma paleta adaptativa para preservar o máximo de qualidade.

O código atualizado para esse modo fica assim:

Python
for nome_arquivo in lista_arquivos:
    caminho_arquivo = os.path.join(pasta, nome_arquivo)
    imagem = Image.open(caminho_arquivo)
    imagem_convertida = imagem.convert("P", palette=Image.ADAPTIVE)
    novo_nome = os.path.join(pasta, f"reduzido_{nome_arquivo}")
    imagem_convertida.save(novo_nome, optimize=True)

O que o parâmetro palette=Image.ADAPTIVE faz?
Ele cria uma paleta de 256 cores personalizada com base nas cores predominantes da imagem, minimizando a perda de qualidade. Isso faz com que a compressão seja mais eficiente do que usar uma paleta padrão.

Resultados da compressão agressiva
Com este método, as reduções são muito mais significativas:

ImagemTamanho OriginalTamanho ReduzidoRedução
tigre.png3.3 MB0.4 MB~88%
cachorro.png2.9 MB1.1 MB~62%
raposa.png2.9 MB0.91 MB~69%

Qual é o impacto na qualidade das imagens?

Embora a compressão com paleta adaptativa reduza muito o tamanho, ocorre uma perda de qualidade perceptível. Mas pra maioria das aplicações, como sites ou compartilhamento online, a qualidade é aceitável.

  • Original: Cores ricas, gradações suaves, maior tamanho de arquivo.
  • Comprimida: Leve perda de detalhes, mas visualmente funcional para usos gerais.

Dica: Teste ambos os métodos (simples e paleta adaptativa) para encontrar o equilíbrio ideal entre tamanho e qualidade para suas necessidades.

Conclusão

Aqui você viu como é possível criar script de poucas linhas que comprime imagens automaticamente usando a biblioteca Pillow. O método simples com optimize=True é ideal para pequenas reduções, enquanto a conversão para paleta adaptativa oferece compressões mais intensas. Esse processo é perfeito para quem precisa otimizar imagens para sites, economizar espaço ou automatizar tarefas.

Confire nossos posts sobre Python no blog para mais dicas e guias como esse!

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!

Hashtag Treinamentos

Para acessar outras publicações de Python, clique aqui!


Quer aprender mais sobre Python com um minicurso básico gratuito?

Posts mais recentes de Python

Posts mais recentes da Hashtag Treinamentos