Python 3 的图像库

Posted

技术标签:

【中文标题】Python 3 的图像库【英文标题】:Image library for Python 3 【发布时间】:2011-04-23 05:11:06 【问题描述】:

python-3 使用什么代替 PIL 来处理图像?

【问题讨论】:

你检查媒体模块了吗? (导入媒体) @inspectorG4dget: 媒体不在python3的标准库中 我也不认为 PIL 是标准的。但看起来我错了 @inspectorG4dget:不,你是对的,PIL 不在标准库中。 应该从 PyPI 安装 Pillow,它应该是 PIL 的替代品;这也是 Python 2 上的首选包。 【参考方案1】:

“友好的 PIL 分支”Pillow 适用于 Python 2 和 3。查看Github project 以获得支持矩阵等。

【讨论】:

2014年10月是still actively being developed,has a nice doc,你可以pip3 install Image(我用枕头不知道),you from PIL import Image。它现在还支持all the major platforms。在为 python3 寻找 PIL 时,这绝对是首选。【参考方案2】:

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

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

【讨论】:

【参考方案3】:

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 应用程序的大型框架。

【讨论】:

【参考方案4】:

截至 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。

【讨论】:

【参考方案5】:

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

【讨论】:

【参考方案6】:

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

pip3 install Pillow

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

pip install Pillow

【讨论】:

【参考方案7】:

根据需要,scikit-image 可能是最佳选择,其操作远远超出了 PIL 和当前版本的 Pillow。维护得很好,至少和枕头一样多。此外,底层数据结构来自 Numpy 和 Scipy,这使得其代码具有难以置信的互操作性。枕头不能处理的例子:

您可以在gallery 中看到它的强大功能。 This paper 提供了很好的介绍。祝你好运!

【讨论】:

【参考方案8】:

如果您使用的是 Python3,您还可以使用在 Python 2 和 3 中工作的库 PILasOPENCV。函数 api 调用与 PIL 或枕头中的相同,但在内部它与 OpenCV 和 numpy 一起使用来加载、保存和操作图像。查看https://github.com/bunkahle/PILasOPENCV 或使用 pip install PILasOPENCV 安装它。并非所有 PIL 函数都经过仿真,但最常见的函数都可以工作。

【讨论】:

以上是关于Python 3 的图像库的主要内容,如果未能解决你的问题,请参考以下文章

windows下Python 3.x图形图像处理库PIL的安装

如何在 python 3 中使用 pycrypto 库使用 DES 加密和解密图像?

Python 中的 PIL 库

python图像库PIL的完美替代品-Pillow

python图像处理之PIL库

好玩Python——PIL项目实训