Como Redimensionar uma Imagem Sem Perder Qualidade
Redimensionar uma imagem sempre altera os dados. Ao diminuir, o software descarta pixels; ao ampliar, inventa novos. O filtro de reamostração certo e o formato de saída adequado tornam essa mudança invisível em distâncias normais de visualização.
Métodos de reamostração
O filtro que o software usa ao redimensionar determina o nível de nitidez do resultado.
| Método | Melhor para | Observações |
|---|---|---|
| Lanczos | Fotos, redução | Resultado mais nítido; leve ringing em bordas duras |
| Bicúbico | Fotos, uso geral | Boa qualidade; padrão na maioria das ferramentas |
| Bilinear | Pré-visualizações rápidas | Mais suave; mais rápido para calcular |
| Nearest neighbor | Pixel art, ícones | Preserva bordas duras; errado para fotos |
Para reduzir fotos, Lanczos produz a saída mais nítida. Para pixel art ou sprites de ícone, nearest neighbor mantém as bordas precisas.
No navegador
Arraste uma imagem para o redimensionador de imagem, insira a largura ou altura alvo e baixe. Bloqueie a proporção antes de inserir as dimensões para evitar distorção. A ferramenta roda no lado do cliente — a imagem não sai do seu dispositivo.
ImageMagick (linha de comando)
# Redimensionar para 800px de largura, manter proporção
convert input.jpg -resize 800x output.jpg
# Redimensionar para dimensões exatas (distorce se a proporção diferir)
convert input.jpg -resize 800x600! output.jpg
# Caber em uma caixa delimitadora sem ampliar
convert input.jpg -resize 800x600> output.jpg
# Redimensionar com reamostração Lanczos
convert input.jpg -resize 800x -filter Lanczos output.jpg
# Redimensionar e converter para WebP na qualidade 85
convert input.jpg -resize 800x -quality 85 output.webp
O flag > impede ampliar — útil ao processar em lote arquivos de dimensões desconhecidas.
sharp (Node.js)
npm install sharp
const sharp = require('sharp');
// Redimensionar para 800px de largura, manter proporção
sharp('input.jpg')
.resize(800)
.toFile('output.jpg');
// Redimensionar para dimensões exatas, recortar para preencher
sharp('input.jpg')
.resize(800, 600, { fit: 'cover', position: 'centre' })
.toFile('output.jpg');
// Redimensionar com kernel Lanczos
sharp('input.jpg')
.resize(800, null, { kernel: sharp.kernel.lanczos3 })
.toFile('output.jpg');
// Redimensionar e converter para WebP
sharp('input.jpg')
.resize(800)
.webp({ quality: 85 })
.toFile('output.webp');
fit: 'cover' recorta para preencher exatamente. fit: 'contain' adiciona letterboxing. fit: 'inside' cabe na caixa sem recortar nem adicionar padding.
Python: Pillow
from PIL import Image
with Image.open('input.jpg') as img:
ratio = 800 / img.width
new_height = int(img.height * ratio)
resized = img.resize((800, new_height), Image.LANCZOS)
resized.save('output.jpg', quality=85, optimize=True)
Image.LANCZOS é o filtro de downsample de maior qualidade no Pillow. No Pillow 10+, também está disponível como Image.Resampling.LANCZOS.
O método thumbnail() preserva a proporção e nunca amplia:
from PIL import Image
with Image.open('input.jpg') as img:
img.thumbnail((800, 800), Image.LANCZOS) # cabe em 800×800
img.save('output.jpg', quality=85)
Ampliação
Ampliar sempre perde qualidade — o software precisa inventar dados de pixel que não existiam. A ampliação bicúbica padrão fica borrada acima de cerca de 1,5× o tamanho original.
Ampliadores por IA (Real-ESRGAN, Topaz Gigapixel) produzem resultados mais nítidos em 2–4×, mas são lentos e desnecessários para a maioria do trabalho web. Para sites, evite ampliar: comece com uma imagem fonte grande o suficiente para o maior tamanho de exibição.
Telas retina e HiDPI
Uma tela retina tem 2× a densidade de pixels de uma tela padrão. Uma imagem exibida em 400 px de largura CSS precisa de um arquivo fonte de 800 px para parecer nítida. Sirva os dois tamanhos com srcset:
<img
src="image-400.jpg"
srcset="image-400.jpg 1x, image-800.jpg 2x"
width="400"
alt="Descrição"
/>
Tamanhos de saída comuns
| Destino | Dimensões recomendadas | Formato |
|---|---|---|
| Banner web / imagem OG | 1200×630 | WebP |
| Imagem de post do blog | 800–1200px de largura | WebP |
| Square do Instagram | 1080×1080 | JPEG |
| Card do Twitter/X | 1200×675 | JPEG |
| Cabeçalho de e-mail | 600px de largura | JPEG |
| Favicon | 32×32, 180×180 | PNG |
Pontos principais
- Reamostração Lanczos dá o resultado mais nítido para reduzir fotos — use por padrão.
- Nunca amplie: as imagens fonte devem ser sempre maiores que o tamanho de exibição.
- Após redimensionar, converta para WebP na qualidade 80–85 para o menor arquivo com boa qualidade.
fit: 'cover'no sharp ethumbnail()no Pillow lidam com a proporção automaticamente.- Sirva imagens 2× via
srcsetpara telas retina.