web-dev-qa-db-fra.com

Bibliothèque d'images pour Python 3

Qu'est-ce que python-3 utilise au lieu de PIL pour manipuler des images?

154
banx

Le "fork convivial PIL" Oreiller fonctionne sur Python 2 et 3 . Découvrez le projet Github pour la matrice de support, etc.

99
Janus Troelsen

Christoph Gohlke a réussi à créer PIL (pour Windows uniquement) pour python versions jusqu'à la version 3.3: http://www.lfd.uci.edu/~gohlke/pythonlibs/

J'ai essayé sa version de PIL avec Python 3.2, et une image ouverte/créer/manipulation de pixels/enregistrer tout le travail.

19
xob

Qt fonctionne très bien avec les graphiques. À mon avis, il est plus polyvalent que PIL.

Vous disposez de toutes les fonctionnalités souhaitées pour la manipulation graphique, mais il existe également des graphiques vectoriels et même un support pour les imprimantes réelles. Et tout cela dans une API uniforme, QPainter .

Pour utiliser Qt, vous avez besoin d'une liaison Python: PySide ou PyQt4 .
Ils supportent tous les deux Python 3.

Voici un exemple simple qui charge une image JPG, dessine un cercle anti-aliasé de rayon 10 aux coordonnées (20, 20) avec la couleur du pixel qui était à ces coordonnées et enregistre l'image modifiée en tant que fichier 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')

Cependant, notez que cette solution est assez "lourde", car Qt est un cadre important pour la création d'applications à interface graphique.

14
Oleh Prypin

Au 30 mars 2012, j’avais essayé et j’avais échoué à ouvrir la fourche de sloonz sur GitHub. Je l’ai bien compilé, mais cela n’a pas fonctionné. J'ai également essayé de construire la bibliothèque de gohlke, qui compilait également mais ne pouvait ouvrir aucune image. Quelqu'un a mentionné PythonMagick ci-dessus, mais il ne compile que sous Windows. Voir PythonMagick sur le wiki wxPython .

La dernière version de PIL a été mise à jour en 2009, et bien que son site Web indique qu’ils travaillent sur un port Python 3, cela fait 3 ans et la liste de diffusion a pris froid.

Pour résoudre mon problème de manipulation d’image Python 3, j’utilise subprocess.call() pour exécuter les commandes du shell ImageMagick. Cette méthode fonctionne.

Voir la documentation du module de sous-processus .

7
s0mebody

Vous voulez la bibliothèque Pillow, voici comment l'installer sur Python 3:

pip3 install Pillow

Si cela ne fonctionne pas pour vous (cela devrait), essayez la méthode normale pip:

pip install Pillow
6
speedplane

Vous pouvez utiliser mon paquet mahotas sur Python 3. Il est basé sur numpy plutôt que sur PIL.

6
luispedro

En fonction des besoins, scikit-image peut constituer le meilleur choix, les manipulations allant bien au-delà de PIL et de la version actuelle de Pillow. Très bien entretenu, au moins autant que Pillow. De plus, les structures de données sous-jacentes proviennent de Numpy et Scipy, ce qui rend son code incroyablement interopérable. Exemples que l'oreiller ne peut pas gérer:

Region Adjacency Graph Merging

Radon Transform

Histogram of oriented gradients

Approximate and subdivide polygons

Vous pouvez voir son pouvoir dans le galerie . Ce document fournit une excellente introduction à celui-ci. Bonne chance!

2
linhares

Si vous êtes sur Python3, vous pouvez également utiliser la bibliothèque PILasOPENCV qui fonctionne dans Python 2 et 3. Les appels de fonctions api sont les mêmes que dans PIL ou pillow mais en interne, cela fonctionne avec OpenCV et numpy pour charger, enregistrer et sauvegarder. manipuler des images. Jetez un oeil à https://github.com/bunkahle/PILasOPENCV ou installez-le avec pip install PILasOPENCV. Toutes les fonctions PIL n’ont pas été simulées, mais les fonctions les plus courantes fonctionnent.

0
bunkus