Was verwendet Python-3 anstelle von PIL zum Bearbeiten von Bildern?
Pillow
von PyPI installieren, was ein Drop-In-Ersatz für sein sollte PIL
; Dies ist auch das bevorzugte Paket für Python 2.
Was verwendet Python-3 anstelle von PIL zum Bearbeiten von Bildern?
Pillow
von PyPI installieren, was ein Drop-In-Ersatz für sein sollte PIL
; Dies ist auch das bevorzugte Paket für Python 2.
Antworten:
Das "freundliche PIL-Gabel" -Kissen funktioniert auf Python 2 und 3 . Überprüfen Sie das Github-Projekt auf Support-Matrix und so weiter.
pip3 install Image
(ich habe Kissen verwendet, ohne es zu wissen), und Siefrom PIL import Image
. Es unterstützt jetzt auch alle wichtigen Plattformen . Wenn Sie nach einem PIL für Python3 suchen, ist dies definitiv die Wahl.
Christoph Gohlke hat es geschafft, PIL (nur für Windows) für Python-Versionen bis 3.3 zu erstellen: http://www.lfd.uci.edu/~gohlke/pythonlibs/
Ich habe seine Version von PIL mit Python 3.2 ausprobiert und das Bild geöffnet / erstellt / Pixel manipuliert / alle Arbeiten gespeichert.
Qt funktioniert sehr gut mit Grafiken. Meiner Meinung nach ist es vielseitiger als PIL.
Sie erhalten alle Funktionen, die Sie für die Grafikmanipulation benötigen, aber es gibt auch Vektorgrafiken und sogar Unterstützung für echte Drucker. Und das alles in einer einheitlichen API,QPainter
.
Um Qt verwenden zu können, benötigen Sie eine Python-Bindung: PySide oder PyQt4 .
Beide unterstützen Python 3.
Hier ist ein einfaches Beispiel, das ein JPG-Bild lädt, einen Antialias-Kreis mit dem Radius 10 an den Koordinaten (20, 20) mit der Farbe des Pixels zeichnet, das sich an diesen Koordinaten befand, und das geänderte Bild als PNG-Datei speichert:
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')
Beachten Sie jedoch, dass diese Lösung ziemlich "schwergewichtig" ist, da Qt ein großes Framework für die Erstellung von GUI-Anwendungen ist.
Bis zum 30. März 2012 habe ich versucht, die Sloonz-Gabel auf GitHub zum Öffnen von Bildern zu bringen. Ich habe es zum Kompilieren gebracht, aber es hat nicht wirklich funktioniert. Ich habe auch versucht, die Bibliothek von gohlke zu erstellen, und sie wurde ebenfalls kompiliert, konnte jedoch keine Bilder öffnen. Jemand hat PythonMagick oben erwähnt, aber es wird nur unter Windows kompiliert. Siehe PythonMagick im wxPython-Wiki .
PIL wurde zuletzt im Jahr 2009 aktualisiert, und während auf der Website angegeben ist, dass an einem Python 3-Port gearbeitet wird, sind es 3 Jahre, und die Mailingliste ist kalt geworden.
Um mein Problem mit der Python 3-Bildmanipulation zu lösen, verwende ich subprocess.call()
ImageMagick-Shell-Befehle. Diese Methode funktioniert.
Je nachdem, was benötigt wird, ist Scikit-Image möglicherweise die beste Wahl, da die Manipulationen weit über PIL und die aktuelle Version von Pillow hinausgehen. Sehr gepflegt, mindestens so viel wie Pillow. Außerdem stammen die zugrunde liegenden Datenstrukturen von Numpy und Scipy, wodurch der Code unglaublich interoperabel ist. Beispiele, mit denen Kissen nicht umgehen können:
Sie können seine Kraft in der Galerie sehen . Dieses Papier bietet eine großartige Einführung. Viel Glück!
Wenn Sie mit Python3 arbeiten, können Sie auch die Bibliothek PILasOPENCV verwenden, die in Python 2 und 3 funktioniert. Funktions-API-Aufrufe sind dieselben wie in PIL oder Pillow, funktionieren jedoch intern mit OpenCV und numpy, um Bilder zu laden, zu speichern und zu bearbeiten. Schauen Sie sich https://github.com/bunkahle/PILasOPENCV an oder installieren Sie es mit pip install PILasOPENCV. Nicht alle PIL-Funktionen wurden simuliert, aber die gängigsten Funktionen funktionieren.