Travesseiro Python - Trabalhando com Imagens

Este capítulo elabora tópicos, incluindo como ler e salvar uma imagem no Pillow.

Lendo uma imagem

Ler e escrever imagens usando a biblioteca de travesseiros é muito simples, com a ajuda de PIL.Image module function.

Sintaxe

Image.open(fp, mode=’r’)

Onde

  • fp- Um nome de arquivo (string), objeto pathlib.Path ou um objeto de arquivo. O objeto de arquivo deve implementar os métodos read (), seek () e tell () e ser aberto no modo binário.

  • mode - É um argumento opcional, se fornecido, deve ser 'r'.

  • Return value - Um objeto de imagem.

  • Error - Se o arquivo não puder ser encontrado ou a imagem não puder ser aberta e identificada.

Exemplo

A seguir está um exemplo muito simples, onde vamos abrir uma imagem de qualquer formato (que estamos usando.jpg), exiba-o em uma janela e salve-o (local padrão) com outro formato de arquivo (.png)

from PIL import Image
image = Image.open('beach1.jpg')
image.show()
image.save('beach1.bmp')
image1 = Image.open('beach1.bmp')
image1.show()

No exemplo acima, importamos o módulo de imagem da biblioteca PIL e, em seguida, chamamos o Image.open()função para ler uma imagem do disco, que retorna um tipo de dados de objeto de imagem. Ele determinará automaticamente o tipo de arquivo observando o conteúdo do arquivo. Para ler, oopen() função aceita um filename(string), uma path object ou um image(file) objeto.

Portanto, ao usar a função open (), estamos realmente lendo a imagem. Image.open () irá ler a imagem e obter todas as informações relevantes da imagem.

Resultado

Se você salvar o programa acima como Example.py e executar, ele exibirá as imagens originais (.jpg) e as imagens salvas novamente (.bmp) usando o utilitário de exibição PNG padrão, como segue -

Actual image

Resaved image (.bmp)

Salvar uma imagem

A função save () grava uma imagem em um arquivo. Como para a função de leitura (open ()), a função save () aceita um nome de arquivo, um objeto de caminho ou um objeto de arquivo que foi aberto para gravação.

Sintaxe

Image.save(fp, format=None, **params)

Onde,

  • fp - Um nome de arquivo (string), objeto pathlib.Path ou objeto de arquivo.

  • format- Substituição de formato opcional. Se omitido, o formato a ser usado é determinado pela extensão do nome do arquivo. Se um objeto de arquivo foi usado em vez de um nome de arquivo, este parâmetro deve sempre ser usado.

  • options - Parâmetros extras para o gravador de imagens.

  • Return value - nenhum

  • KeyError - Se o formato de saída não puder ser determinado a partir do nome do arquivo, use a opção de formato para resolver isso.

  • IOError - Se o arquivo não pôde ser gravado, o arquivo pode ter sido criado e pode conter dados parciais.

Resumindo, a sintaxe acima salvará a imagem com o nome de arquivo fornecido. Se nenhum formato for especificado, ele será baseado na extensão do nome de arquivo atual. Para fornecer instruções adicionais ao redator, usamos opções de palavras-chave.

image.save('beach1.bmp')

No exemplo acima, ele salva o arquivo com base na extensão do arquivo para determinar o tipo de imagem, por exemplo - o acima irá criar um arquivo bmp em nosso diretório de trabalho atual.

Você também pode especificar explicitamente o tipo de arquivo como um segundo parâmetro -

image.save('beach1.gif', 'GIF')