适用于Python 3的图片库


154

什么是python-3而不是PIL来处理图像?


您是否检查了媒体模块?(进口媒体)
inspectorG4dget 2010年

@ inspectorG4dget:媒体不在python3的标准库中
banx 2010年

我也不认为PIL是标准的。但是看起来我错了
inspectorG4dget 2010年

2
@ inspectorG4dget:不,是的,PIL不在标准库中。
Janus Troelsen

应该Pillow从PyPI 安装,它应该是PyPI的直接替代品PIL;这也是Python 2上的首选软件包。
Antti Haapala'2

Answers:



19

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

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


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')

但是请注意,此解决方案是“重量级”的,因为Qt是用于制作GUI应用程序的大型框架。


7

截至2012年3月30日,我尝试并未能在GitHub上使用sloonz fork打开图像。我把它编译好了,但是实际上没有用。我还尝试构建gohlke的库,它也进行了编译,但是无法打开任何图像。有人在上面提到过PythonMagick,但它只能在Windows上编译。请参阅wxPython Wiki上的PythonMagick

PIL的最新更新是在2009年,虽然它的网站说他们正在使用Python 3端口,但是已经过去了3年,并且邮件列表变得越来越冷。

为了解决我的Python 3图像处理问题,我正在使用subprocess.call()执行ImageMagick shell命令。此方法有效。

请参阅子流程模块文档



6

您需要Pillow,这是在Python 3上安装它的方法:

pip3 install Pillow

如果那对您不起作用(应该),请尝试normal pip

pip install Pillow

3

根据需要,scikit-image可能是最佳选择,其处理方式已经超越了PIL和当前版本的Pillow。保养得很好,至少和枕头一样多。而且,底层的数据结构来自Numpy和Scipy,这使其代码具有令人难以置信的互操作性。枕头无法处理的示例:

区域邻接图合并

on变换

定向梯度直方图

近似和细分多边形

您可以在图库中看到其力量。 本文提供了一个很好的介绍。祝好运!


0

如果您使用的是Python3,还可以使用库PILasOPENCV,该库可在Python 2和3中使用。函数api调用与PIL或pillow中的函数相同,但在内部它与OpenCV和numpy一起加载,保存和操作图像。看看https://github.com/bunkahle/PILasOPENCV或使用pip install PILasOPENCV进行安装。并非所有PIL功能都已被模拟,但是最常用的功能都可以工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.