Python 3的图像库

ban*_*anx 155 python image python-imaging-library python-3.x

什么是python-3使用而不是PIL来操作图像?

Jan*_*sen 99

"友好的PIL fork" Pillow适用于Python 2和3.查看Github项目的支持矩阵等.

  • 它[仍在积极开发](https://github.com/python-pillow/Pillow/releases)至2014年10月,[有一个很好的文档](http://pillow.readthedocs.org/index.html ),你可以`pip3安装Image`(我在不知道的情况下使用枕头),[你来自PIL import Image`](http://pillow.readthedocs.org/en/latest/handbook/tutorial.html).它现在还支持[所有主要平台](http://pillow.readthedocs.org/en/latest/installation.html#platform-support).在为python3寻找PIL时,这绝对是首选. (4认同)

小智 19

Christoph Gohlke设法为高达3.3的python版本构建PIL(仅适用于Windows):http://www.lfd.uci.edu/~gohlke/pythonlibs/

我用Python 3.2尝试了他的PIL版本,图像打开/创建/像素操作/保存所有工作.


Ole*_*pin 14

Qt适用于图形.在我看来,它比PIL更通用.

您可以获得图形处理所需的所有功能,但也有矢量图形甚至支持真正的打印机.所有这一切都在一个统一的API中QPainter.

要使用Qt,您需要一个Python绑定:PySidePyQt4.
它们都支持Python 3.

下面是一个加载JPG图像的简单示例,在坐标(20,20)处绘制半径为10的抗锯齿圆,其中包含位于这些坐标处的像素颜色,并将修改后的图像保存为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')
Run Code Online (Sandbox Code Playgroud)

但请注意,这个解决方案非常"重量级",因为Qt是一个用于制作GUI应用程序的大型框架.


小智 7

截至2012年3月30日,我已尝试并未能在GitHub上获取sloonz分叉以打开图像.我得到它编译确定,但它实际上没有工作.我也试过构建gohlke的库,它也编译但是没能打开任何图像.有人提到上面的PythonMagick,但它只在Windows上编译.请参阅wxPython wiki上的PythonMagick.

PIL最后一次更新是在2009年,虽然它的网站上说他们正在开发Python 3端口,但它已经3年了,而且邮件列表已经变冷了.

为了解决我的Python 3图像处理问题,我subprocess.call()用来执行ImageMagick shell命令.这种方法有效.

请参阅子进程模块文档.


lui*_*dro 6

您可以在Python 3上使用我的包mahotas.它基于numpy而不是基于PIL.


spe*_*ane 6

你想要Pillow,这里是如何在Python 3上安装它:

pip3 install Pillow
Run Code Online (Sandbox Code Playgroud)

如果这对您不起作用(应该),请尝试正常pip:

pip install Pillow
Run Code Online (Sandbox Code Playgroud)