Manipulando imagens com PIL – básico

Bem, com uma lista já enviada agora tenho um pouco mais de tempo, embora ainda faltem mais duas: uma (escrita, já atrasada) e outra dentro de 2 semanas.🙂

Segue abaixo uma visão básica do que precisei usar da PIL nesses trabalhos (basicamente abrir, pegar pixels, colocar pixels, salvar)

Abrindo uma imagem

img = Image.open(filename)

Nesse trabalho eu tive que usar apenas imagens monocromáticas no modo ‘L’ ao invés de RGB (ou seja, 1 valor por pixel ao invés de 3), e para ‘forçar’ isso, o comando poderia ter sido o seguinte:

img = Image.open(filename).convert(‘L’)

Pegando os dados

Como eu estava usando imagens pequenas, de 512×512, o método que usei foi o ‘getdata()’ no objeto imagem criado anteriormente que retorna um objeto com suporte a iteração com os dados dos pixels.

Escrevendo os dados

Para escrever, basta usar o ‘putdata’ que escreve no objeto a partir da posição 0 (ele enxerga a imagem como um vetor unidimensional no caso do [get|put]data, sendo linha após linha sequencialmente). Opcionalmente argumentos scale; que multiplica todos os pixels; e offset; a partir de onde começa a copiar; podem ser usados.

pixel = value*scale + offset

Salvando

Assumindo que você tem um objeto imagem e que salvá-lo, ele possui um método save (D’oh!) que recebe como argumento o nome do arquivo de saída.

img.save(‘foobar.png’)

Conclusão

Bem, esse foi praticamente um ‘hello, world!’ do PIL, mostrando que pelo menos para essa manipulação básica de imagens é uma biblioteca bem simples e direta de usar. Para mais informações: API do módulo Image.

Nos próximos posts, numpy, filtros, etc…


Um Comentário


Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s