它能做什么
同一张照片,跑八次真实运算;括号里就是 Pillow 的那一行。








在浏览器里试一试
原图
im = Image.open("photo.jpg")

换一张底图
选一个运算
画面由浏览器实时算出,上面的代码就是这一步在 Pillow 里的写法。
样图:AS Photography from Poland,CC BY 4.0;Petar Milošević,CC BY-SA 4.0。均来自 Wikimedia Commons
一张图,三步
Image.open() 读入文件,惰性解码,直到你真正动到像素。
缩放、裁剪、调色、滤镜、绘制,一次一个函数,工作几乎都在这里。
im.save() 写出,格式由扩展名或 format 参数决定。
它认识的格式
| 格式 | 读取 | 写入 | 说明 |
|---|---|---|---|
| JPEG | 支持 | 支持 | 有损压缩,最通用 |
| PNG | 支持 | 支持 | 无损,支持透明度 |
| GIF | 支持 | 支持 | 支持动画与调色板 |
| WebP | 支持 | 支持 | 支持动画与透明 |
| TIFF | 支持 | 支持 | 支持多页 |
| BMP | 支持 | 支持 | Windows 位图,通常不压缩 |
| ICO | 支持 | 支持 | 多尺寸图标 |
| PSD | 支持 | 不支持 | 可读取 Photoshop 图层 |
以上只是最常见的几种,Pillow 还支持一大批其它图像格式,具体以官方文档的格式列表为准。
从 1995 年续写至今

1995 年由 Fredrik Lundh 写出,最后一个版本停在 2009 年。许可证宽松,但代码停更了。
2010 年 Jeffrey 'Alex' Clark 把它接过来,取名 Pillow,继续在同一个导入路径下维护。
谁在背后支持
Tidelift 从 2018 年起协调安全修复与披露,Thanks.dev 按依赖的比例分配捐赠,GitHub Sponsors 让维护者直接收到赞助,OpenSSF 提供工程与安全规范,OSS-Fuzz 在社区自己的机器上持续跑模糊测试,Zenodo 给每个发行版一个 DOI,PyPI 把包送到你手上。
资金、基础设施与安全流程各有人负责:商业支持来自 Tidelift,捐赠由 Thanks.dev 按依赖比例分配,模糊测试跑在社区自己的机器上。
真实世界的图像


视频:Pristurus,CC BY-SA 3.0。照片:Extemporalist,CC0;Paul Harrison,CC BY-SA 4.0。均来自 Wikimedia Commons
常见问题
Pillow 和 PIL 是什么关系?
Pillow 是 PIL 的活跃分支。PIL 由 Fredrik Lundh 在 1995 年写出,最后一个版本发布于 2009 年;2010 年 Jeffrey 'Alex' Clark 把它接续下来,取名 Pillow,维护至今。导入路径仍然是 from PIL import Image,旧代码一行都不用改。
怎么安装,需要自己编译吗?
先升级 pip,再安装:python3 -m pip install --upgrade pip,然后 python3 -m pip install --upgrade Pillow。主流平台都有预编译的 wheel,常用的解码库已经打包在内,不需要自己编译;只有少数格式要在系统里另行安装依赖。
打开一张图要写什么?
两行:from PIL import Image,然后 im = Image.open("photo.jpg")。返回的 Image 对象是惰性的,只有真正读取像素或做转换时才会解码。
怎么存成另一种格式?
im.save("photo.png"),格式由扩展名推断,也可以用 format="PNG" 显式指定;有损格式还能用 quality 参数控制质量。
大图会不会很占内存?
像素会在内存里展开,尺寸越大占用越多。读 JPEG 时用 draft() 让解码器直接降采样,或者用 thumbnail() 生成缩略图,都能把占用压下来。
支持哪些 Python 版本?
Pillow 为当前仍在维护的 Python 3 版本提供 wheel,并随 Python 的版本节奏一起更新,不支持的旧版本不再发布二进制包。
许可证是什么?
宽松的 MIT-CMU 许可证,和 PIL 一致:可以自由地用于商业项目与再分发,只需在副本中保留版权声明。
怎么参与贡献?
先看仓库里的 CONTRIBUTING 指南,再从标记为需要帮助的 issue 入手,提交拉取请求即可。文档改动和示例同样是贡献。
发现安全漏洞怎么报告?
通过 GitHub 的私密安全通道提交,不要公开。如果无法使用 GitHub,可以联系 Tidelift 的安全渠道,由它来协调修复与披露。
把图像交给 Python
一条命令装好,之后 from PIL import Image 就能用了。