Cosa sta usando python-3 al posto di PIL per manipolare le immagini?
Pillow
da PyPI che dovrebbe essere un sostituto drop-in PIL
; questo è il pacchetto preferito anche su Python 2.
Cosa sta usando python-3 al posto di PIL per manipolare le immagini?
Pillow
da PyPI che dovrebbe essere un sostituto drop-in PIL
; questo è il pacchetto preferito anche su Python 2.
Risposte:
Il cuscino "amichevole forcella PIL" funziona su Python 2 e 3 . Dai un'occhiata al progetto Github per matrice di supporto e così via.
pip3 install Image
(stavo usando il cuscino senza saperlo) e tufrom PIL import Image
. Supporta anche tutte le principali piattaforme ora. Quando cerchi un PIL per python3, questa è sicuramente la scelta.
Christoph Gohlke è riuscito a creare PIL (solo per Windows) per le versioni Python fino alla 3.3: http://www.lfd.uci.edu/~gohlke/pythonlibs/
Ho provato la sua versione di PIL con Python 3.2 e l'immagine aperta / crea / manipolazione pixel / salva tutto il lavoro.
Qt funziona molto bene con la grafica. Secondo me è più versatile di PIL.
Ottieni tutte le funzionalità che desideri per la manipolazione della grafica, ma c'è anche la grafica vettoriale e persino il supporto per le stampanti reali. E tutto questo in una sola API uniforme QPainter
.
Per usare Qt è necessario un bind Python: PySide o PyQt4 .
Entrambi supportano Python 3.
Ecco un semplice esempio che carica un'immagine JPG, disegna un cerchio con antialiasing del raggio 10 a coordinate (20, 20) con il colore del pixel che era a quelle coordinate e salva l'immagine modificata come file 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')
Ma tieni presente che questa soluzione è piuttosto "pesante", poiché Qt è un framework di grandi dimensioni per la creazione di applicazioni GUI.
Al 30 marzo 2012, ho provato e non sono riuscito a ottenere il fork di sloonz su GitHub per aprire le immagini. L'ho compilato per bene, ma in realtà non ha funzionato. Ho anche provato a costruire la libreria di gohlke, che è stata compilata ma non è riuscita ad aprire alcuna immagine. Qualcuno ha menzionato PythonMagick sopra, ma si compila solo su Windows. Vedi PythonMagick sul wiki di wxPython .
PIL è stato aggiornato l'ultima volta nel 2009, e mentre il suo sito web dice che stanno lavorando su una porta Python 3, sono passati 3 anni e la mailing list è diventata fredda.
Per risolvere il mio problema di manipolazione delle immagini in Python 3, sto usando subprocess.call()
per eseguire i comandi della shell di ImageMagick. Questo metodo funziona.
Vuoi la libreria Pillow , ecco come installarla su Python 3:
pip3 install Pillow
Se questo non funziona per te (dovrebbe), prova normale pip
:
pip install Pillow
A seconda di ciò che è necessario, l' immagine di scikit può essere la scelta migliore, con manipolazioni che vanno ben oltre il PIL e l'attuale versione di Pillow. Molto ben curato, almeno quanto il cuscino. Inoltre, le strutture di dati sottostanti provengono da Numpy e Scipy, il che rende il suo codice incredibilmente interoperabile. Esempi che il cuscino non può gestire:
Puoi vedere il suo potere nella galleria . Questo documento fornisce un'ottima introduzione. In bocca al lupo!
Se sei su Python3 puoi anche usare la libreria PILasOPENCV che funziona in Python 2 e 3. Le chiamate API api sono le stesse di PIL o pillow ma internamente funziona con OpenCV e numpy per caricare, salvare e manipolare immagini. Dai un'occhiata a https://github.com/bunkahle/PILasOPENCV o installalo con pip install PILasOPENCV. Non tutte le funzioni PIL sono state simulate ma le funzioni più comuni funzionano.