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 você vai ver hoje?
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:
pip install PillowApós a instalação, você pode importar a biblioteca no seu código Python usando:
from PIL import Image
import osComo 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:
- Crie uma pasta chamada
imagensno mesmo diretório do seu script Python. - Coloque as imagens que deseja comprimir nessa pasta.
- Use a biblioteca
ospara listar todos os arquivos da pasta.
Aqui está o código inicial para configurar a pasta e listar os arquivos:
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.
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_":
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:
| Imagem | Tamanho Original | Tamanho Reduzido | Redução |
|---|---|---|---|
| tigre.png | 3.3 MB | 3.1 MB | ~6% |
| cachorro.png | 2.9 MB | 2.7 MB | ~7% |
| raposa.png | 2.9 MB | 2.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:
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:
| Imagem | Tamanho Original | Tamanho Reduzido | Redução |
|---|---|---|---|
| tigre.png | 3.3 MB | 0.4 MB | ~88% |
| cachorro.png | 2.9 MB | 1.1 MB | ~62% |
| raposa.png | 2.9 MB | 0.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!
Posts mais recentes de Python
- Curso Básico de Python: Saia do Zero em 10 Aulas GrátisAprenda com o curso básico de Python gratuito da Hashtag: 10 aulas práticas, exercícios e projetos reais para sair do zero em programação.
- Agentes RAG com Python: como criar um assistente de IAAprenda a criar Agentes RAG com Python do zero: LangChain, FAISS e OpenAI para montar um assistente de IA que responde com base nos seus documentos.
- 25 Tipos de Gráficos em Python: Guia Completo com CódigoAprenda a criar os principais tipos de gráficos em Python com Plotly: barras, pizza, mapas e mais, com código pronto para copiar e usar.
Posts mais recentes da Hashtag Treinamentos
- Planilha de Controle de Notas Fiscais no Excel [Grátis]Baixe a planilha de controle de notas fiscais no Excel grátis: calcule ISS e retenções, veja o que está em aberto e gere a cobrança de cada nota de serviço.
- Qual IA usar na empresa: ChatGPT, Claude ou Perplexity?Qual IA usar na empresa: veja as diferenças entre ChatGPT, Claude e Perplexity e quando cada um rende mais em cada área da sua equipe.
- Apostilas Gratuitas em PDF: Excel, Power BI, Python e IABaixe apostilas gratuitas em PDF de Excel, Power BI, Python, Claude e agentes de IA, com exercícios e gabarito. Escolha a sua e comece hoje.








