博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
五十 常用第三方模块 PIL
阅读量:5872 次
发布时间:2019-06-19

本文共 1840 字,大约阅读时间需要 6 分钟。

PIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库了。PIL功能非常强大,但API却非常简单易用。

由于PIL仅支持到Python 2.7,加上年久失修,于是一群志愿者在PIL的基础上创建了兼容的版本,名字叫,支持最新Python 3.x,又加入了许多新特性,因此,我们可以直接安装使用Pillow。

安装Pillow

在命令行下直接通过pip安装:

$ pip install pillow

如果遇到Permission denied安装失败,请加上sudo重试。

操作图像

来看看最常见的图像缩放操作,只需三四行代码:

from PIL import Image# 打开一个jpg图像文件,注意是当前路径:im = Image.open('test.jpg')# 获得图像尺寸:w, h = im.sizeprint('Original image size: %sx%s' % (w, h))# 缩放到50%:im.thumbnail((w//2, h//2))print('Resize image to: %sx%s' % (w//2, h//2))# 把缩放后的图像用jpeg格式保存:im.save('thumbnail.jpg', 'jpeg')

其他功能如切片、旋转、滤镜、输出文字、调色板等一应俱全。

比如,模糊效果也只需几行代码:

from PIL import Image, ImageFilter# 打开一个jpg图像文件,注意是当前路径:im = Image.open('test.jpg')# 应用模糊滤镜:im2 = im.filter(ImageFilter.BLUR)im2.save('blur.jpg', 'jpeg')

效果如下:

PIL-blur

PIL的ImageDraw提供了一系列绘图方法,让我们可以直接绘图。比如要生成字母验证码图片:

from PIL import Image, ImageDraw, ImageFont, ImageFilterimport 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 * 4height = 60image = 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的强大功能,请请参考Pillow官方文档:

转载于:https://www.cnblogs.com/wuxl360/p/5498887.html

你可能感兴趣的文章
SEO如何快速提高网站排名?
查看>>
H3C模拟器ping,tel,ssh配置
查看>>
js (jQuery) 之 取值
查看>>
私有云对企业来说有什么好处
查看>>
C语言编程数出1到100的整数中出现了多少次数字9
查看>>
手机相片删除了怎么恢复? 手机照片恢复方法汇总
查看>>
ansible 基本操作(初试)
查看>>
SQL SERVER模糊匹配查询
查看>>
进程与线程
查看>>
linux的free命令详解-内存是拿来用的不是拿来看的
查看>>
centos7安装python3
查看>>
openssl,加密,解密,https
查看>>
说说LAMP
查看>>
2013年思科万物互联IoE十大见解
查看>>
Linux学习笔记7-磁盘管理
查看>>
mysql dba系统学习(8)查询日志文件功能
查看>>
路由器三种口令的设置
查看>>
继续上一篇剩下的例子
查看>>
检查脚本
查看>>
为什么PHP能够受到大家追捧和喜爱,又为什么饱受嘲讽?
查看>>