Python 图片处理库的发展历史介绍

举报
Jerry Wang 发表于 2024/02/01 11:46:32 2024/02/01
【摘要】 Python Imaging Library,简称 PIL,是 Python 最早也是最主要的图像处理库之一。Pxhere 随着时间的推移,它经历了许多的变化,包括新增功能、性能优化和与各种操作系统的兼容性问题解决等。这篇文章将从发展历程、主要应用范围及实例中介绍 PIL 的历史。PIL 的早期版本最初发布于1995年,由 Fredrik Lundh 开发,主要目标是提供一种统一的方式处理各...

Python Imaging Library,简称 PIL,是 Python 最早也是最主要的图像处理库之一。

Pxhere 随着时间的推移,它经历了许多的变化,包括新增功能、性能优化和与各种操作系统的兼容性问题解决等。这篇文章将从发展历程、主要应用范围及实例中介绍 PIL 的历史。

PIL 的早期版本最初发布于1995年,由 Fredrik Lundh 开发,主要目标是提供一种统一的方式处理各种图像格式。在此之前,Python 在图像处理方面的功能十分有限,因为缺乏专门的库或者模块进行处理,使得开发人员要么需要依赖外部程序或者库,要么需要自己编写大量低层次的图像处理代码。

Lundh 发布的这个库具有简单易用的特性,它支持很多基础的图像操作,如打开图像、编辑图像、保存图像等。这些基本功能为后来的开发打下了基础。早在 PIL 1.0 版本,就开始支持包括 TIFF、JPEG、BMP、PPM、PNG 在内的多种图像格式的读写。

然而,随着画图应用的快速发展,PIL 1.0 版本显得力不从心。于是,在2000年,Lundh 发布了 1.1 版本。该版本增加了很多新的图像操作特性,如图像裁剪、缩放图像、旋转图像等,让用户可以更灵活的处理图像。此外,新版本还增加了一些新的图像格式支援,例如 GIF、PDF、PCX 等。

尽管 PIL 在 Python 社区内的应用日益广泛,但是其在2009年以后并未继续更新维护,这让许多用户开始寻找替代的图像处理库。

Lundh 在2011年发布了 PIL 的继承者 – Pillow。Pillow 的开发目的是为了改进并维护 PIL,以满足时代的要求。它继承了 PIL 的所有功能,并且更进一步添加了许多新特性和优化,这让 Pillow 比 PIL 更易用、更灵活、更强大。Pillow 不仅支持更多新的图像处理功能,比如更多图像的数据处理方式、图像滤镜等,而且还优化了 PIL 的一些性能问题,提升了处理图像的效率。

比如,我们在处理一张 RGB 格式的图像时,可以使用 Pillow 的 Image 模块打开图像,然后使用 transform 函数将图像进行任意形状的变换,例如旋转、缩放、平移和仿射等。

例如代码:

from PIL import Image

打开图像

img = Image.open(‘example.jpg’)

旋转图像

img = img.rotate(45)

保存图像

img.save(‘example_rotated.jpg’)

这个例子就能很好地演示 Pillow 如何简单且高效地处理图像。同样的操作在原始的 PIL 中会更为复杂,并且处理效率更低。

通过以上的介绍,无疑,可以看出 PIL 和其继承者 Pillow 在 Python 图像处理领域的重要地位,它们为开发者提供了强大的图像处理能力。尽管 PIL 的开发已经停止,但是其功能强大、简单易用等特性却在 Pillow 中得到了继续。今天,我们可以看到 Pillow 已经成为 Python 中最主要的图像处理库之一,越来越多的开发者开始使用 Pillow 进行图像处理工作。

以上就是对 PIL 库的发展历史的介绍。从最初的 PIL 1.0 版本,到后来的 1.1 版本,再到现在的 Pillow,图像处理库已经为 Python 开发者提供了非常完美的解决方案。通过 PIL 库,开发者可以方便地对图像更换颜色、调整大小、甚至进行更复杂的操作,如滤镜处理等。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。