2010-10-09 13 views
141

¿Qué está usando python-3 en lugar de PIL para manipular imágenes?Biblioteca de imágenes para Python 3

+0

¿Revisaste el módulo de medios? (medios de importación) – inspectorG4dget

+0

@ inspectorG4dget: los medios no están en la biblioteca estándar de python3 – banx

+0

No pensé que el PIL fuera estándar tampoco.Pero parece que estoy equivocado – inspectorG4dget

Respuesta

7

A partir del 30 de marzo de 2012, he intentado y no he podido obtener el tenedor sloonz en GitHub para abrir imágenes. Lo compilé bien, pero en realidad no funcionó. También intenté construir la biblioteca de Gohlke, y compiló también pero no pudo abrir ninguna imagen. Alguien mencionó PythonMagick arriba, pero solo compila en Windows. Ver PythonMagick on the wxPython wiki.

PIL se actualizó por última vez en 2009, y aunque su sitio web dice que están trabajando en un puerto de Python 3, han pasado 3 años y la lista de correo se ha vuelto fría.

Para resolver mi problema de manipulación de imágenes Python 3, estoy usando subprocess.call() para ejecutar los comandos del shell ImageMagick. Este método funciona.

Ver the subprocess module documentation.

19

Christoph Gohlke logrado construir PIL (sólo para Windows) para las versiones pitón hasta 3,3: http://www.lfd.uci.edu/~gohlke/pythonlibs/

me trataron su versión del PIL con Python 3.2, y la imagen de apertura/creación de manipulación/píxel/guardar todo el trabajo.

6

Puedes usar mi paquete mahotas en Python 3. Está basado en numpy en lugar de basado en PIL.

13

Qt funciona muy bien con gráficos. En mi opinión, es más versátil que PIL.

Obtiene todas las características que desea para la manipulación de gráficos, pero también hay gráficos vectoriales e incluso soporte para impresoras reales. Y todo eso en una uniforme API, QPainter.

Para usar Qt necesita un enlace de Python para ello: PySide o PyQt4.
Ambos Python soporte 3.

Aquí está un ejemplo sencillo que carga una imagen JPG, dibuja un círculo antialiased de radio en las coordenadas (20, 20) con el color del píxel que estaba en esas coordenadas y guarda la imagen modificada como un archivo 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') 

Pero tenga en cuenta que esta solución es bastante 'peso pesado', porque Qt es un gran marco para hacer las aplicaciones GUI.

91

La "horquilla PIL amigable" Pillow funciona en Python 2 y 3. Consulte Github project para la matriz de soporte, etc.

+2

Está [todavía en desarrollo activo] (https://github.com/python-pillow/Pillow/releases) en octubre de 2014, [tiene un buen documento] (http://pillow.readthedocs.org/index. html), puede 'pip3 instalar Image' (estaba usando una almohada sin saber), y [usted' de PIL import Image'] (http://pillow.readthedocs.org/en/latest/handbook/tutorial.html) . También es compatible [con todas las plataformas principales] (http://pillow.readthedocs.org/en/latest/installation.html#platform-support) ahora. Cuando se busca un PIL para python3, esta es definitivamente la opción. – Yosh

4

desea que el Pillow biblioteca, aquí es cómo instalarlo en Python 3:

pip3 install Pillow 

Si eso no funciona para usted (debería), trata de lo normal pip:

pip install Pillow 
Cuestiones relacionadas