Bildbibliothek für Python 3

154

Was verwendet Python-3 anstelle von PIL zum Bearbeiten von Bildern?

Banx
quelle
Haben Sie das Medienmodul überprüft? (Medien importieren)
InspectorG4dget
@ inspectorG4dget: Medien sind nicht in der Standardbibliothek von Python3
Banx
Ich dachte auch nicht, dass PIL Standard ist. Aber es sieht so aus, als ob ich falsch
inspectorG4dget
2
@ inspectorG4dget: Nein, Sie haben Recht, PIL befindet sich nicht in der Standardbibliothek.
Janus Troelsen
Man sollte Pillowvon PyPI installieren, was ein Drop-In-Ersatz für sein sollte PIL; Dies ist auch das bevorzugte Paket für Python 2.
Antti Haapala

Antworten:

19

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.

xob
quelle
14

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.

Oleh Prypin
quelle
7

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.

Siehe die Dokumentation zum Unterprozessmodul .

s0mebody
quelle
6

Sie können mein Paket Mahotas unter Python 3 verwenden. Es basiert eher auf Numpy als auf PIL.

luispedro
quelle
6

Wenn Sie die Pillow- Bibliothek möchten , installieren Sie sie folgendermaßen auf Python 3:

pip3 install Pillow

Wenn das bei Ihnen nicht funktioniert (sollte es), versuchen Sie es normal pip:

pip install Pillow
Geschwindigkeitsflugzeug
quelle
3

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:

Zusammenführen von Regionsadjazenzdiagrammen

Radon-Transformation

Histogramm orientierter Gradienten

Polygone approximieren und unterteilen

Sie können seine Kraft in der Galerie sehen . Dieses Papier bietet eine großartige Einführung. Viel Glück!

Linhares
quelle
0

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.

Bunkus
quelle