Python 3的图像库

时间:2010-10-09 15:56:24

标签: python image python-3.x python-imaging-library

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

8 个答案:

答案 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绑定: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应用程序的大型框架。

答案 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命令。这种方法有效。

请参阅the subprocess module documentation

答案 4 :(得分:6)

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

答案 5 :(得分:6)

您需要 Pillow,以下是如何在Python 3上安装它:

pip3 install Pillow

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

pip install Pillow

答案 6 :(得分:1)

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

Region Adjacency Graph Merging

Radon Transform

Histogram of oriented gradients

Approximate and subdivide polygons

您可以在gallery中查看其功能。 This paper提供了一个很好的介绍。祝你好运!

答案 7 :(得分:0)

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