Python图像处理库PIL/Pillow入门指南
核心要点
- Python图像处理库(PIL)是一个免费工具,它为Python解释器添加了图像处理功能,支持各种图像文件格式,并提供标准的图像处理程序,例如基于像素的操作、滤镜、图像增强等等。
- 尽管PIL的最后一个版本(1.1.7)发布于2009年,并且只支持Python 1.5.2-2.7,但名为Pillow的项目已经fork了PIL的代码库并添加了Python 3.x的支持,使其成为大多数Python用户可行的选择。
- 使用PIL或Pillow,您可以轻松执行诸如读取图像、将图像转换为灰度或其他类型、调整图像大小以及保存图像等任务。该库的全面文档提供了更多详细信息和教程。
在之前的关于Python技巧的文章中,我提到过Python是一种能够激发用户热爱的语言。
原因之一是这种语言提供了大量的节省时间的库。一个很好的例子是Python图像处理库(PIL),本文将重点介绍它。
PIL能做什么
PIL是一个免费的库,它为Python解释器添加了图像处理功能,支持多种图像文件格式,例如PPM、PNG、JPEG、GIF、TIFF和BMP。
PIL提供了许多标准的图像处理/操作程序,例如:
- 基于像素的操作
- 遮罩和透明度处理
- 滤镜(例如,模糊、轮廓、平滑、边缘检测)
- 图像增强(例如,锐化、亮度调整、对比度)
- 几何、颜色和其他变换
- 向图像添加文本
- 剪切、粘贴和合并图像
- 创建缩略图
PIL和Pillow
PIL的一个问题是,其最新的版本1.1.7发布于2009年,并且只支持Python 1.5.2-2.7。尽管PIL网站承诺即将推出Python 3.x的版本,但其最后一次提交是在2011年,并且开发似乎已经停止。
幸运的是,对于Python 3.x用户来说,并非一切都已结束。一个名为Pillow的项目已经fork了PIL的代码库并添加了Python 3.x的支持。鉴于大多数读者可能都在使用Python 3.x,因此本文将重点介绍Pillow更新。
安装Pillow
由于Pillow支持从Python 2.4到最新版本的Python,我将只关注Pillow的安装,而不是旧版本的PIL。
在Mac上使用Python
我目前正在Mac OS X Yosemite 10.10.5上编写本教程,因此将描述如何在Mac OS X机器上安装Pillow。但是,不用担心,我将在本节末尾提供一个链接,其中描述了如何在其他操作系统上安装Pillow。
我只想在这里指出,Mac OS X预装了Python。但是,该版本很可能早于3.x。
例如,在我的机器上,当我运行$ python --version
终端命令时,我得到的是Python 2.7.10。
Python和pip
安装Pillow的一种非常简单的方法是通过pip。
如果您的机器上没有安装pip,只需在终端中输入以下命令即可完成:
$ sudo easy_install pip
现在,要安装Pillow,只需在终端中输入以下内容:
$ sudo pip install pillow
这很容易,不是吗?
正如我承诺的那样,有关在其他操作系统上安装Pillow的信息,您可以在这里找到相关说明。
一些例子
在本节中,我将演示一些我们可以使用PIL完成的简单操作。
我将对以下图像执行这些测试:
如果您想按照这些示例操作,请下载此图像。
读取图像
这是图像处理任务中最基本的操作,因为要处理图像,必须先读取它。使用PIL,这可以很容易地完成,如下所示:
from PIL import Image img = Image.open('brick-house.png')
请注意,这里的img是一个PIL图像对象,由open()函数创建,该函数是PIL Image模块的一部分。
您还可以读取已打开的文件、字符串或tar存档。
将图像转换为灰度、显示并保存
文件brick-house.png是一个彩色图像。要将其转换为灰度、显示它,然后保存新的灰度图像,您可以简单地执行以下操作:
from PIL import Image img = Image.open('brick-house.png').convert('L') img.show() img.save('brick-house-gs','png')
请注意,我们使用了三个主要函数来执行此操作:convert()、show()和save()。由于我们要转换为灰度图像,因此在convert()中使用了参数'L'。
以下是生成的图像:
转换为其他图像类型
我们正在处理的图像是png类型。假设您想将其转换为其他图像类型,例如jpg。可以使用save()函数(如上小节中用于保存结果(将输出写入磁盘)的函数)来执行此操作:
from PIL import Image img = Image.open('brick-house.png') img.save('brick-image','jpeg')
调整图像大小
我们原始图像的大小(尺寸)是440 x 600像素。如果我们想调整它的大小,并使其大小为256 x 256像素,则可以执行以下操作:
from PIL import Image img = Image.open('brick-house.png') new_img = img.resize((256,256)) new_img.save('brick-house-256x256','png')
这会生成一个新的正方形图像:
如您所见,这会将图像压缩到所需的尺寸,而不是裁剪它,这可能不是您想要的。当然,您也可以在保持适当纵横比的同时裁剪图像。
总结
这个快速入门仅旨在介绍PIL的表面,并演示如何通过PIL库在Python中轻松完成一些复杂的图像处理任务。
您可以使用此库执行的许多其他操作在全面的Pillow文档中进行了描述,您可以在其中阅读有关上述问题的更多详细信息以及方便的教程。
我希望这个介绍能激励您尝试使用Python进行图像处理。玩得开心!
Python图像处理库(PIL)常见问题解答(FAQ)
如何在我的系统上安装Python图像处理库(PIL)?
要安装Python图像处理库(PIL),您需要使用pip,它是Python的包管理器。打开您的终端或命令提示符并输入以下命令:pip install pillow
。'pillow'库是PIL的一个分支,并且正在积极维护,因此建议使用'pillow'而不是PIL。如果您安装了多个版本的Python,则可能需要对Python 3使用pip3 install pillow
。
如何使用PIL打开和显示图像?
要使用PIL打开和显示图像,您需要使用Image.open()
函数打开图像,并使用Image.show()
函数显示图像。这是一个示例:
$ sudo easy_install pip
在此代码中,'image.jpg'是您的图像文件的名称。确保图像文件与您的Python脚本位于同一目录中,或者提供图像文件的完整路径。
如何使用PIL调整图像大小?
要使用PIL调整图像大小,您可以使用Image.resize()
函数。此函数接受一个元组,该元组指定以像素为单位的新大小。这是一个示例:
$ sudo pip install pillow
在此代码中,图像大小调整为800×800像素。
(后续FAQ答案类似,略去,保持文章大意不变)
以上是使用Python成像库操纵图像的详细内容。更多信息请关注PHP中文网其他相关文章!

与这些顶级开发人员新闻通讯有关最新技术趋势的了解! 这个精选的清单为每个人提供了一些东西,从AI爱好者到经验丰富的后端和前端开发人员。 选择您的收藏夹并节省时间搜索REL

该教程通过使用AWS服务来指导您通过构建无服务器图像处理管道。 我们将创建一个部署在ECS Fargate群集上的next.js前端,与API网关,Lambda函数,S3桶和DynamoDB进行交互。 Th

该试点程序是CNCF(云本机计算基础),安培计算,Equinix金属和驱动的合作,简化了CNCF GitHub项目的ARM64 CI/CD。 该计划解决了安全问题和绩效

此基于GO的网络漏洞扫描仪有效地确定了潜在的安全弱点。 它利用了GO的并发功能的速度功能,包括服务检测和漏洞匹配。让我们探索它的能力和道德


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

SublimeText3汉化版
中文版,非常好用

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),