CodeGym /Cursos /Python SELF PT /Redimensionamento de imagens

Redimensionamento de imagens

Python SELF PT
Nível 45 , Lição 1
Disponível

1. Carregando e salvando imagens

Para carregar imagens no Pillow, usamos a classe Image. Depois de carregada, a imagem pode ser transformada e salva em diferentes formatos. Vamos dar uma olhada nas operações básicas de carregamento e salvamento de imagens.

Carregar uma imagem

Para carregar uma imagem, use o método Image.open(). Ele permite abrir imagens em qualquer formato suportado.

Python

from PIL import Image

# Abrindo uma imagem
image = Image.open("example.jpg")

# Exibindo informações sobre o arquivo
print(image.format)  # Formato da imagem, por exemplo, JPEG ou PNG
print(image.size)    # Tamanho da imagem (largura, altura)
print(image.mode)    # Modo de cor, por exemplo, RGB ou Grayscale

Esse código carrega a imagem example.jpg e exibe suas principais características: formato, tamanho e modo de cor. Se a imagem não estiver na mesma pasta, forneça o caminho completo para o arquivo.

Salvando uma imagem

Depois de carregar e modificar a imagem, você pode salvá-la em qualquer outro formato suportado, apenas especificando a extensão desejada no nome do arquivo. O método save() permite definir o nome e formato do arquivo de saída.

Python

# Salvando a imagem em outro formato
image.save("example.png")  # Salva a imagem no formato PNG

Também é possível alterar a qualidade da imagem salva para reduzir o tamanho do arquivo, o que é especialmente útil para imagens no formato JPEG.

Python

# Salvando com alteração de qualidade
image.save("compressed_example.jpg", quality=85)  # O valor de quality varia de 1 a 95

2. Redimensionando imagens

Redimensionar é uma das tarefas mais comuns ao trabalhar com imagens. Pillow oferece várias maneiras de redimensionar imagens, incluindo ajuste de largura e altura específicas, dimensionamento proporcional e criação de miniaturas.

Redimensionando com o método resize()

O método resize() permite definir o tamanho exato da imagem (largura e altura), mas a imagem pode ficar distorcida se os novos tamanhos não mantiverem as proporções originais.

Python

# Definindo um novo tamanho
new_size = (800, 600)
resized_image = image.resize(new_size)

# Salvando a imagem redimensionada
resized_image.save("resized_example.jpg")

Neste exemplo, a imagem é redimensionada para 800x600 pixels e salva como um novo arquivo. Se a imagem original tiver proporções diferentes, ela será esticada ou comprimida para atender aos novos tamanhos.

Redimensionamento proporcional com o método thumbnail()

Para redimensionar uma imagem mantendo suas proporções, use o método thumbnail(). Esse método reduz automaticamente o tamanho da imagem para caber dentro das dimensões especificadas, mantendo as proporções originais. Isso é muito útil para criar miniaturas de imagens.

Python

# Criando uma miniatura com tamanhos máximos de 400x400 pixels
image.thumbnail((400, 400))

# Salvando a miniatura
image.save("thumbnail_example.jpg")

O método thumbnail() modifica a imagem "no lugar", o que significa que as alterações acontecem no objeto image original. Após executar thumbnail(), Pillow ajusta a imagem para que suas dimensões não excedam 400x400 pixels, mantendo as proporções.

Redimensionamento com corte proporcional usando ImageOps.fit()

Às vezes, é necessário redimensionar uma imagem para caber exatamente em dimensões específicas, mantendo as proporções por meio de corte das partes excedentes. Nesses casos, use o método ImageOps.fit().

Python

from PIL import ImageOps

# Definindo um novo tamanho
target_size = (400, 400)
fitted_image = ImageOps.fit(image, target_size, method=Image.LANCZOS)

# Salvando a imagem ajustada
fitted_image.save("fitted_example.jpg")

O método ImageOps.fit() corta automaticamente a imagem para que ela caiba nas dimensões especificadas sem distorções. Por exemplo, se a imagem original for retangular, o método cortará as bordas para torná-la quadrada, encaixando no tamanho 400x400 pixels.

3. Exemplo de código completo

Abaixo está um exemplo de código que combina todos os métodos discutidos — desde o carregamento até o redimensionamento e salvamento de imagens.

Python

from PIL import Image, ImageOps

# Abrindo uma imagem
image = Image.open("example.jpg")

# Redimensionando sem manter as proporções
resized_image = image.resize((800, 600))
resized_image.save("resized_example.jpg")

# Reduzindo proporcionalmente a imagem
image.thumbnail((400, 400))
image.save("thumbnail_example.jpg")

# Redimensionando com corte para caber no tamanho desejado
fitted_image = ImageOps.fit(image, (400, 400), method=Image.LANCZOS)
fitted_image.save("fitted_example.jpg")

Explicação dos métodos de redimensionamento

  1. resize(): permite definir tamanhos arbitrários, mas pode distorcer a imagem se os novos tamanhos não corresponderem às proporções do original.
  2. thumbnail(): redimensiona a imagem mantendo as proporções. Útil para criar miniaturas e reduzir imagens grandes.
  3. ImageOps.fit(): ajusta a imagem às dimensões especificadas cortando as bordas. Muito útil quando você precisa que a imagem tenha tamanho exato sem distorção.

4. Dicas:

Aplicações práticas de redimensionamento de imagens

  1. Otimização de imagens para websites: Imagens grandes podem deixar a página mais lenta, então é importante otimizá-las, reduzindo o tamanho sem perder qualidade.
  2. Criação de miniaturas para galerias: O uso de thumbnail() permite criar rapidamente miniaturas de imagens que podem ser exibidas em pré-visualização.
  3. Ajuste de imagens a tamanhos específicos: Quando é preciso que a imagem se encaixe em dimensões fixas, como para avatares ou perfis, o método ImageOps.fit() permite cortar e redimensionar a imagem para atender a esses requisitos.

Dicas para escolher métodos

Use resize() quando precisar especificar exatamente a largura e a altura da imagem, e não importa se as proporções mudarem.

Use thumbnail() para criar miniaturas ou quando quiser reduzir o tamanho da imagem mantendo suas proporções.

Use ImageOps.fit() quando precisar de uma imagem com tamanho específico, mas sem distorcer as proporções. Esse método corta as partes excedentes, sendo ideal para ajustar imagens a molduras específicas.

1
Tarefa
Python SELF PT, nível 45, lição 1
Bloqueado
Trabalho básico com imagens
Trabalho básico com imagens
2
Tarefa
Python SELF PT, nível 45, lição 1
Bloqueado
Redução proporcional de imagens
Redução proporcional de imagens
3
Tarefa
Python SELF PT, nível 45, lição 1
Bloqueado
Redimensionamento de imagem com recorte
Redimensionamento de imagem com recorte
4
Tarefa
Python SELF PT, nível 45, lição 1
Bloqueado
Automatização do redimensionamento para uma galeria web
Automatização do redimensionamento para uma galeria web
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION