什么是python-3而不是PIL来操作图像?
答案 0 :(得分:99)
“友好的PIL fork” Pillow适用于Python 2和3 。查看Github project以获取支持矩阵,依此类推。
答案 1 :(得分:19)
Christoph Gohlke设法为高达3.3的python版本构建PIL(仅适用于Windows):http://www.lfd.uci.edu/~gohlke/pythonlibs/
我用Python 3.2尝试了他的PIL版本,图像打开/创建/像素操作/保存所有工作。
答案 2 :(得分:14)
Qt适用于图形。在我看来,它比PIL更通用。
您可以获得图形处理所需的所有功能,但也有矢量图形甚至支持真正的打印机。所有这些都在一个统一的API中QPainter
。
要使用Qt,您需要一个Python绑定:PySide或PyQt4 它们都支持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应用程序的大型框架。
答案 3 :(得分:7)
截至2012年3月30日,我已尝试并未能在GitHub上获取sloonz fork来打开图像。我得到它编译确定,但它实际上没有工作。我也试过构建gohlke的库,它也编译但是没能打开任何图像。有人提到上面的PythonMagick,但它只在Windows上编译。请参阅PythonMagick on the wxPython wiki。
PIL最后一次更新是在2009年,虽然它的网站上说他们正在使用Python 3端口,但已经过了3年,邮件列表已经变冷了。
要解决我的Python 3图像处理问题,我使用subprocess.call()
来执行ImageMagick shell命令。这种方法有效。
答案 4 :(得分:6)
您可以在Python 3上使用我的包mahotas。它基于numpy而不是基于PIL。
答案 5 :(得分:6)
答案 6 :(得分:1)
根据需要,scikit-image可能是最好的选择,其操作远超出PIL和当前版本的Pillow。保养得很好,至少和枕头一样多。而且,底层的数据结构来自Numpy和Scipy,这使得其代码具有令人难以置信的互操作性。枕头无法处理的示例:
您可以在gallery中查看其功能。 This paper提供了一个很好的介绍。祝你好运!
答案 7 :(得分:0)
如果您使用的是Python3,还可以使用库PILasOPENCV,该库可在Python 2和3中使用。函数api调用与PIL或pillow中的相同,但在内部它与OpenCV和numpy一起加载,保存和处理图像。看一下https://github.com/bunkahle/PILasOPENCV或使用pip install PILasOPENCV进行安装。并非所有PIL功能都已被模拟,但是最常用的功能都可以工作。