Bibliothèque d'images pour Python 3

154

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

banx
la source
Avez-vous vérifié le module multimédia? (import media)
inspectorG4dget
@ inspectorG4dget: le média n'est pas dans la bibliothèque standard de python3
banx
Je ne pensais pas non plus que la PIL était standard. Mais on dirait que je me trompe
inspectorG4dget
2
@ inspectorG4dget: Non, vous avez raison, PIL n'est pas dans la bibliothèque standard.
Janus Troelsen
On devrait installer à Pillowpartir de PyPI qui devrait être un remplacement instantané pour PIL; c'est aussi le package préféré sur Python 2.
Antti Haapala

Réponses:

98

L' oreiller "friendly PIL fork" fonctionne sur Python 2 et 3 . Consultez le projet Github pour la matrice de support et ainsi de suite.

Janus Troelsen
la source
4
Il est toujours en développement actif comme pour octobre 2014, a un joli doc , vous pouvez pip3 install Image(j'utilisais un oreiller sans le savoir), et vousfrom PIL import Image . Il prend également en charge toutes les principales plates-formes maintenant. Lorsque vous recherchez un PIL pour python3, c'est définitivement le choix.
Yosh
19

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

J'ai essayé sa version de PIL avec Python 3.2, et image open / create / pixel manipulation / save all work.

xob
la source
14

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

Vous obtenez toutes les fonctionnalités que vous souhaitez pour la manipulation graphique, mais il existe également des graphiques vectoriels et même une prise en charge des 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 prennent tous les deux en charge Python 3.

Voici un exemple simple qui charge une image JPG, dessine un cercle anti-crénelé de rayon 10 aux coordonnées (20, 20) avec la couleur du pixel qui se trouvait à ces coordonnées et enregistre l'image modifiée sous forme de 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')

Mais veuillez noter que cette solution est assez «lourde», car Qt est un grand framework pour créer des applications GUI.

Oleh Prypin
la source
7

Au 30 mars 2012, j'ai essayé et échoué d'obtenir le fork sloonz sur GitHub pour ouvrir les images. Je l'ai bien compilé, mais cela n'a pas fonctionné. J'ai également essayé de créer la bibliothèque de gohlke, et elle s'est également compilée mais n'a pas réussi à ouvrir les images. Quelqu'un a mentionné PythonMagick ci-dessus, mais il ne se compile que sous Windows. Voir PythonMagick sur le wiki wxPython .

PIL a été mis à jour pour la dernière fois 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 est devenue froide.

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

Consultez la documentation du module de sous-processus .

s0mebody
la source
6

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

Luispedro
la source
6

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 normal pip:

pip install Pillow
speedplane
la source
3

Selon ce qui est nécessaire, scikit-image peut être le meilleur choix, avec des manipulations allant bien au-delà de PIL et de la version actuelle de Pillow. Très bien entretenu, au moins autant que l'oreiller. En outre, 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:

Fusion de graphes d'adjacence de région

Transformation du radon

Histogramme des dégradés orientés

Approximation et subdivision des polygones

Vous pouvez voir sa puissance dans la galerie . Cet article en fournit une excellente introduction. Bonne chance!

linhares
la source
0

Si vous êtes sur Python3, vous pouvez également utiliser la bibliothèque PILasOPENCV qui fonctionne dans Python 2 et 3. Les appels de fonction api sont les mêmes que dans PIL ou oreiller mais en interne, cela fonctionne avec OpenCV et numpy pour charger, enregistrer et manipuler des images. Jetez un œil à 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.

bunkus
la source