All Tools / Blog / Como Redimensionar uma Imagem Sem Perder Qualidade

Como Redimensionar uma Imagem Sem Perder Qualidade

4 min read

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 e thumbnail() no Pillow lidam com a proporção automaticamente.
  • Sirva imagens 2× via srcset para telas retina.