Biblioteka obrazów dla Pythona 3

154

Czego używa Python-3 zamiast PIL do manipulowania obrazami?

banx
źródło
Czy sprawdziłeś moduł multimedialny? (import mediów)
inspectorG4dget,
@ inspectorG4dget: nośnika nie ma w standardowej bibliotece python3
banx
Nie sądziłem, że PIL to standard. Ale wygląda na to, że się mylę
inspectorG4dget
2
@ inspectorG4dget: Nie, masz rację, PIL nie znajduje się w standardowej bibliotece.
Janus Troelsen
Należy zainstalować Pillowz PyPI, który powinien być zamiennikiem PIL; jest to również preferowany pakiet w Pythonie 2.
Antti Haapala

Odpowiedzi:

19

Christoph Gohlke zdołał zbudować PIL (tylko dla Windows) dla wersji Pythona do 3.3: http://www.lfd.uci.edu/~gohlke/pythonlibs/

Wypróbowałem jego wersję PIL z Pythonem 3.2 i otwórz obraz / utwórz / manipuluj pikselami / zapisz całą pracę.

xob
źródło
14

Qt bardzo dobrze współpracuje z grafiką. Moim zdaniem jest bardziej wszechstronny niż PIL.

Otrzymujesz wszystkie funkcje, których potrzebujesz do obróbki grafiki, ale jest też grafika wektorowa, a nawet obsługa prawdziwych drukarek. A wszystko to w jednym jednolitego interfejsu API QPainter.

Aby używać Qt, potrzebujesz powiązania Pythona: PySide lub PyQt4 .
Oba obsługują Python 3.

Oto prosty przykład, który ładuje obraz JPG, rysuje antyaliasowany okrąg o promieniu 10 o współrzędnych (20, 20) w kolorze piksela, który był na tych współrzędnych i zapisuje zmodyfikowany obraz jako plik 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')

Należy jednak pamiętać, że to rozwiązanie jest dość „ciężkie”, ponieważ Qt to duży framework do tworzenia aplikacji GUI.

Oleh Prypin
źródło
7

Od 30 marca 2012 r. Nie udało mi się pobrać widelca sloonz na GitHub do otwierania obrazów. Udało mi się to skompilować, ale tak naprawdę nie działało. Próbowałem także zbudować bibliotekę Gohlkego, a ona również skompilowała, ale nie udało mi się otworzyć żadnych obrazów. Ktoś wspomniał powyżej o PythonMagicku, ale kompiluje się on tylko w systemie Windows. Zobacz PythonMagick na wiki wxPython .

PIL został ostatnio zaktualizowany w 2009 roku i chociaż jego strona internetowa mówi, że pracują nad portem Python 3, minęły 3 lata, a lista mailingowa ostygła.

Aby rozwiązać mój problem z manipulacją obrazem w Pythonie 3, używam subprocess.call()do wykonywania poleceń powłoki ImageMagick. Ta metoda działa.

Zobacz dokumentację modułu podprocesu .

s0mebody
źródło
6

Możesz użyć moich mahotów pakietów w Pythonie 3. Jest on oparty raczej na numpy niż na PIL.

luispedro
źródło
6

Chcesz bibliotekę Pillow , oto jak ją zainstalować w Pythonie 3:

pip3 install Pillow

Jeśli to nie zadziała (powinno), spróbuj normalnie pip:

pip install Pillow
speedplane
źródło
3

W zależności od potrzeb, scikit-image może być najlepszym wyborem, z manipulacjami wykraczającymi daleko poza PIL i obecną wersję Pillow. Bardzo zadbany, przynajmniej tak samo jak Pillow. Ponadto podstawowe struktury danych pochodzą od Numpy i Scipy, co sprawia, że ​​jego kod jest niesamowicie interoperacyjny. Przykłady, z którymi poduszka nie radzi sobie:

Scalanie wykresu sąsiedztwa regionów

Transformacja radonowa

Histogram zorientowanych gradientów

Przybliż i podziel wielokąty

Jego moc można zobaczyć w galerii . Ten artykuł stanowi świetne wprowadzenie do niego. Powodzenia!

linhares
źródło
0

Jeśli korzystasz z Python3, możesz również użyć biblioteki PILasOPENCV, która działa w Pythonie 2 i 3. Wywołania funkcji API są takie same jak w PIL lub poduszce, ale wewnętrznie działa z OpenCV i numpy do ładowania, zapisywania i manipulowania obrazami. Zajrzyj na https://github.com/bunkahle/PILasOPENCV lub zainstaluj go za pomocą pip install PILasOPENCV. Nie wszystkie funkcje PIL zostały zasymulowane, ale większość z nich działa.

bunkus
źródło