PIL 基本用法
PIL (Python Image Library) 是 Python 平台处理图片的事实标准,兼具强大的功能和简洁的 API。但只支持 python2。
安装PIL,Python2
在 Debian/Ubuntu Linux 下直接通过 apt 安装:
$ sudo apt-get install python-imaging
Mac 和其他版本的 Linux 可以直接使用 easy_install 或 pip 安装,安装前需要把编译环境装好:
$ sudo easy_install PIL
如果安装失败,根据提示先把缺失的包(比如 openjpeg)装上。
Windows 平台就去PIL官方网站下载 exe 安装包。
Pillow,Python3
Pillow 是 PIL 的一个派生分支,但如今已经发展成为比 PIL 本身更具活力的图像处理库。支持 python3
Pillow 的 Github 主页:https://github.com/python-pillow/Pillow
Pillow的文档:https://pillow.readthedocs.org/en/latest/handbook/index.html
Pillow的文档中文翻译(对应版本v2.4.0):http://pillow-cn.readthedocs.io/zh_CN/latest/
安装
pip install Pillow
操作图像
来看看最常见的图像缩放操作,只需三四行代码:
import Image
# 打开一个jpg图像文件,注意路径要改成你自己的:
im = Image.open('/Users/michael/test.jpg')
# 获得图像尺寸:
w, h = im.size
# 缩放到50%:
im.thumbnail((w//2, h//2))
# 把缩放后的图像用jpeg格式保存,也可以用作更改图片格式
im.save('/Users/michael/thumbnail.jpg', 'jpeg')
查看实例
使用 show()
方法来查看实例。注意,PIL
会将实例暂存为一个临时文件,而后打开它。
im.show()
模糊效果
from PIL import Image, ImageFilter
im = Image.open('test.jpg')
# 应用模糊滤镜:
im2 = im.filter(ImageFilter.BLUR)
im2.save('blur.jpg', 'jpeg')
查看实例的属性
Image
类的实例有 5 个属性,分别是:
format
: 以 string 返回图片档案的格式(JPG, PNG, BMP, None, etc.);如果不是从打开文件得到的实例,则返回 None。mode
: 以 string 返回图片的模式(RGB, CMYK, etc.);完整的列表参见 官方说明·图片模式列表size
: 以二元 tuple 返回图片档案的尺寸 (width, height)palette
: 仅当 mode 为 P 时有效,返回 ImagePalette 示例info
: 以字典形式返回示例的信息
生成字母验证码图片
from PIL import Image, ImageDraw, ImageFont, ImageFilter
import random
# 随机字母:
def rndChar():
return chr(random.randint(65, 90))
# 随机颜色1:
def rndColor():
return (random.randint(64, 255), random.randint(64, 255), random.randint(64, 255))
# 随机颜色2:
def rndColor2():
return (random.randint(32, 127), random.randint(32, 127), random.randint(32, 127))
# 240 x 60:
width = 60 * 4
height = 60
image = Image.new('RGB', (width, height), (255, 255, 255))
# 创建Font对象:
font = ImageFont.truetype('Arial.ttf', 36)
# 创建Draw对象:
draw = ImageDraw.Draw(image)
# 填充每个像素:
for x in range(width):
for y in range(height):
draw.point((x, y), fill=rndColor())
# 输出文字:
for t in range(4):
draw.text((60 * t + 10, 10), rndChar(), font=font, fill=rndColor2())
# 模糊:
image = image.filter(ImageFilter.BLUR)
image.save('code.jpg', 'jpeg');
如果运行的时候报错:
IOError: cannot open resource
这是因为PIL无法定位到字体文件的位置,可以根据操作系统提供绝对路径,比如:
'/Library/Fonts/Arial.ttf'
要详细了解 PIL 的强大功能,请请参考PIL官方文档
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 bin07280@qq.com
文章标题:PIL 基本用法
文章字数:784
本文作者:Bin
发布时间:2017-12-17, 17:57:22
最后更新:2019-08-06, 00:07:35
原始链接:http://coolview.github.io/2017/12/17/Python/PIL-%E5%9F%BA%E6%9C%AC%E7%94%A8%E6%B3%95/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。