Biblioteca de imágenes para Python 3

154

¿Qué usa python-3 en lugar de PIL para manipular imágenes?

banx
fuente
¿Revisaste el módulo de medios? (medios de importación)
inspectorG4dget
@ inspectorG4dget: los medios no están en la biblioteca estándar de python3
banx
Tampoco pensé que PIL fuera estándar. Pero parece que estoy equivocado
inspectorG4dget
2
@ inspectorG4dget: No, tienes razón, PIL no está en la biblioteca estándar.
Janus Troelsen
Uno debe instalar Pillowdesde PyPI, que debe ser un reemplazo directo para PIL; Este es el paquete preferido en Python 2 también.
Antti Haapala

Respuestas:

19

Christoph Gohlke logró construir PIL (solo para Windows) para versiones de Python hasta 3.3: http://www.lfd.uci.edu/~gohlke/pythonlibs/

Probé su versión de PIL con Python 3.2 e imagen abierta / crear / manipulación de píxeles / guardar todo el trabajo.

xob
fuente
14

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

Obtiene todas las funciones 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 API uniforme, QPainter.

Para usar Qt, necesita un enlace de Python: PySide o PyQt4 .
Ambos son compatibles con Python 3.

Aquí hay un ejemplo simple que carga una imagen JPG, dibuja un círculo antialias de radio 10 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 'pesada', porque Qt es un gran marco para hacer aplicaciones GUI.

Oleh Prypin
fuente
7

Al 30 de marzo de 2012, intenté y no pude obtener el fork de sloonz en GitHub para abrir imágenes. Lo compilé bien, pero en realidad no funcionó. También intenté construir la biblioteca de Gohlke, y también se compiló pero no se pudo abrir ninguna imagen. Alguien mencionó PythonMagick anteriormente, pero solo se compila en Windows. Vea PythonMagick en el wiki de wxPython .

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

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

Consulte la documentación del módulo de subproceso .

s0mebody
fuente
6

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

luispedro
fuente
6

Desea la biblioteca Pillow , aquí se explica cómo instalarla en Python 3:

pip3 install Pillow

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

pip install Pillow
Speedplane
fuente
3

Dependiendo de lo que se necesite, scikit-image puede ser la mejor opción, con manipulaciones que van más allá de PIL y la versión actual de Pillow. Muy bien mantenido, al menos tanto como Pillow. Además, las estructuras de datos subyacentes son de Numpy y Scipy, lo que hace que su código sea increíblemente interoperable. Ejemplos que la almohada no puede manejar:

Fusión de gráfico de adyacencia de región

Transformación de radón

Histograma de gradientes orientados

Polígonos aproximados y subdivididos

Puedes ver su poder en la galería . Este documento ofrece una gran introducción. ¡Buena suerte!

linhares
fuente
0

Si está en Python3, también puede usar la biblioteca PILasOPENCV que funciona en Python 2 y 3. Las llamadas a la API de función son las mismas que en PIL o almohada, pero internamente funciona con OpenCV y numpy para cargar, guardar y manipular imágenes. Eche un vistazo a https://github.com/bunkahle/PILasOPENCV o instálelo con pip install PILasOPENCV. No todas las funciones PIL se han simulado, pero las funciones más comunes funcionan.

bunkus
fuente