Qu'est-ce que python-3 utilise au lieu de PIL pour manipuler les images?
Pillow
partir de PyPI qui devrait être un remplacement instantané pour PIL
; c'est aussi le package préféré sur Python 2.
Qu'est-ce que python-3 utilise au lieu de PIL pour manipuler les images?
Pillow
partir de PyPI qui devrait être un remplacement instantané pour PIL
; c'est aussi le package préféré sur Python 2.
Réponses:
L' oreiller "friendly PIL fork" fonctionne sur Python 2 et 3 . Consultez le projet Github pour la matrice de support et ainsi de suite.
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.
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.
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.
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 .
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
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:
Vous pouvez voir sa puissance dans la galerie . Cet article en fournit une excellente introduction. Bonne chance!
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.