概述
对于 Python 图像处理社区来说,PIL(Python Imaging Library)和 Pillow 是两个至关重要的库。然而,这两个库之间存在一些混淆和问题。本文旨在澄清 PIL 和 Pillow 之间的关系,并讨论它们的特性、差异和演变。
PIL
PIL 是 1995 年首次发布的原始 Python 图像处理库。它为 Python 提供了许多图像处理功能,包括图像打开、加载、保存、编辑、转换、绘制和显示。PIL 已广泛用于 Python 图像处理应用程序中,至今仍受到广泛使用。
Pillow 是 PIL 的分支吗?
是。Pillow 是 PIL 的一个分支,于 2010 年首次发布。它旨在解决 PIL 中存在的几个问题,包括:
- 与较新 Python 版本的不兼容性:PIL 尚未与 Python 3 完全兼容。
- 缺乏维护:PIL 的原始维护者不再提供积极支持。
- 低速性能:PIL 在某些操作上的性能较低。
Pillow 通过更新代码库、改进性能并添加对 Python 3 的支持来解决了这些问题。Pillow 现在被认为是 PIL 的事实上的继任者,并且比 PIL 更加广泛地使用。
PIL 和 Pillow 的差异
虽然 Pillow 是 PIL 的分支,但两个库之间仍有一些差异:
- 许可:Pillow 在 GNU 通用公共许可证版本 3(GPLv3)下获得许可,而 PIL 在 PIL 特殊许可证下获得许可,该许可证与 GPLv3 不兼容。这意味着如果您使用 Pillow,您的应用程序也必须遵守 GPLv3。
- 依赖关系:Pillow 比 PIL 具有更多的依赖关系。它需要 libtiff、libjpeg 和 zlib,而 PIL 只需要 zlib。
- 名称冲突:在 Python 中导入 Pillow 时,它使用
PIL
别名。这可能会与您已安装的原始 PIL 发生名称冲突。为了解决这个问题,建议使用from PIL import Image, ImageFilter
等明确导入来避免冲突。
PIL 和 Pillow 的演变
PIL 的开发已基本停止,而 Pillow 则继续更新和维护。Pillow 的最新版本是 9.4.1,于 2023 年 4 月 5 日发布。Pillow 的积极开发确保了它的最新版本并不断添加新功能和错误修复。
选择 PIL 还是 Pillow
如果您要从事新的 Python 图像处理项目,强烈建议使用 Pillow。它比 PIL 更加广泛地使用、维护得更好,并且性能优于 PIL。但是,如果您有现有依赖 PIL 的应用程序,则可以在权衡许可和依赖冲突的风险后决定是否升级到 Pillow。
常见问题解答
1. PIL 和 Pillow 是同一个库吗?
- 是和否。技术上,Pillow 是 PIL 的一个分支,但是,Pillow 已经演变成为一个不同的库,具有不同的许可证和特性。
2. 我应该使用 PIL 还是 Pillow?
- 对于新项目,建议使用 Pillow。对于现有依赖 PIL 的应用程序,您可以选择升级到 Pillow 或在权衡风险后保留 PIL。
3. 为什么 Pillow 在导入时使用 PIL
别名?
- 这是一种方便用户的方式,允许他们使用与 PIL 相同的语法来导入 Pillow。
4. 如何避免 PIL 和 Pillow 的名称冲突?
- 使用明确导入,例如
from PIL import Image, ImageFilter
5. Pillow 需要哪些依赖项?
- Pillow 需要 libtiff、libjpeg 和 zlib。
原创文章,作者:魏景忆,如若转载,请注明出处:https://www.wanglitou.cn/article_79675.html