Biblioteca de imagens para Python 3


154

O que python-3 está usando em vez de PIL para manipular imagens?


Você verificou o módulo de mídia? (import media)
inspectorG4dget

@ inspectorG4dget: media não está na biblioteca padrão de python3
banx

Também não achei que o PIL fosse padrão. Mas parece que estou errado
inspectorG4dget

2
@ inspectorG4dget: Não, você está certo, o PIL não está na biblioteca padrão.
Janus Troelsen

Deve-se instalar a Pillowpartir do PyPI, que deve ser um substituto para PIL; este é o pacote preferido no Python 2 também.
Antti Haapala

Respostas:



19

Christoph Gohlke conseguiu criar o PIL (apenas para Windows) para versões python até 3.3: http://www.lfd.uci.edu/~gohlke/pythonlibs/

Eu tentei a sua versão do PIL com Python 3.2 e a imagem abre / cria / manipulação de pixels / salva todo o trabalho.


14

O Qt funciona muito bem com gráficos. Na minha opinião, é mais versátil que o PIL.

Você obtém todos os recursos que deseja para manipulação de gráficos, mas também existem gráficos vetoriais e até suporte para impressoras reais. E tudo isso em uma API uniforme QPainter,.

Para usar o Qt, você precisa de uma ligação Python: PySide ou PyQt4 .
Ambos suportam Python 3.

Aqui está um exemplo simples que carrega uma imagem JPG, desenha um círculo antialias de raio 10 nas coordenadas (20, 20) com a cor do pixel que estava nessas coordenadas e salva a imagem modificada como um arquivo PNG:

from PySide.QtCore import *
from PySide.QtGui import *

app = QCoreApplication([])

img = QImage('input.jpg')

g = QPainter(img)
g.setRenderHint(QPainter.Antialiasing)
g.setBrush(QColor(img.pixel(20, 20)))
g.drawEllipse(QPoint(20, 20), 10, 10)
g.end()

img.save('output.png')

Mas observe que esta solução é bastante 'pesada', porque o Qt é uma estrutura grande para criar aplicativos de GUI.


7

Em 30 de março de 2012, tentei e não consegui colocar o garfo sloonz no GitHub para abrir imagens. Eu consegui compilar ok, mas na verdade não funcionou. Também tentei criar a biblioteca do gohlke, que também compilou, mas não conseguiu abrir nenhuma imagem. Alguém mencionou o PythonMagick acima, mas ele é compilado apenas no Windows. Veja PythonMagick no wiki do wxPython .

O PIL foi atualizado pela última vez em 2009 e, embora o site diga que eles estão trabalhando em uma porta Python 3, faz 3 anos e a lista de discussão ficou fria.

Para resolver meu problema de manipulação de imagem no Python 3, estou usando subprocess.call()para executar comandos de shell do ImageMagick. Este método funciona.

Consulte a documentação do módulo de subprocesso .



6

Você quer a biblioteca Pillow , aqui está como instalá-la no Python 3:

pip3 install Pillow

Se isso não funcionar para você (deveria), tente normal pip:

pip install Pillow

3

Dependendo do que for necessário, o scikit-image pode ser a melhor escolha, com manipulações que vão muito além do PIL e da versão atual do Pillow. Muito bem conservado, pelo menos tanto quanto travesseiro. Além disso, as estruturas de dados subjacentes são da Numpy e Scipy, o que torna seu código incrivelmente interoperável. Exemplos que o travesseiro não pode lidar:

Mesclagem de gráfico de adjacência de região

Radon Transform

Histograma de gradientes orientados

Polígonos aproximados e subdivididos

Você pode ver seu poder na galeria . Este artigo fornece uma ótima introdução a ele. Boa sorte!


0

Se você estiver no Python3, também poderá usar a biblioteca PILasOPENCV, que funciona no Python 2 e 3. As chamadas de API de função são as mesmas do PIL ou travesseiro, mas internamente funciona com OpenCV e numpy para carregar, salvar e manipular imagens. Dê uma olhada em https://github.com/bunkahle/PILasOPENCV ou instale-o com o pip install PILasOPENCV. Nem todas as funções PIL foram simuladas, mas as funções mais comuns funcionam.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.