Pillow介绍
PIL:Python Imaging Library
,已经是Python平台事实上的图像处理标准库了。PIL功能非常强大,但API却非常简单易用。
由于PIL仅支持到Python 2.7,加上年久失修,于是一群志愿者在PIL的基础上创建了兼容的版本,名字叫Pillow
,支持最新Python 3.x,又加入了许多新特性,因此,我们可以直接安装使用Pillow。
安装的方式很简单,执行pip install pillow
即可。但是请注意不是通过import pillow
导入模块,而是通过from PIL import Image
导入图片对象。
pillow的简单使用
下面是对一个图像进行缩小以及对图像进行模糊处理和轮廓处理的例子。
from PIL import Image
from PIL import ImageFilter
def func_narrow_img():
# 打开图像 类型是from PIL.JpegImagePlugin import JpegImageFile
img = Image.open("d:/imgs/wolf.jpg")
# 获取图像大小即宽高
print("img size: ", img.size)
print("width={}\theight={}".format(img.width, img.height))
# 缩放图像
# 譬如缩小一半
size=(img.width//2, img.height//2)
img.thumbnail(size)
print("reset img size: ", img.size)
# 保存缩小后的图片
img.save("d:/imgs/wolf_small.jpg", "jpeg")
def func_blur_img():
# 打开图像 类型是from PIL.JpegImagePlugin import JpegImageFile
img = Image.open("d:/imgs/wolf.jpg")
# 会返回新的img对象
# ImageFilter.CONTOU 轮廓图 图片很美
new_img = img.filter(ImageFilter.CONTOUR)
new_img.thumbnail((new_img.width//2, new_img.height//2))
new_img.save("d:/imgs/wolf_contour.jpg", "jpeg")
# ImageFilter.BLUR 模糊图
new_img = img.filter(ImageFilter.BLUR)
new_img.save("d:/imgs/wolf_blur.jpg", "jpeg")
生成验证码
代码比较简单,代码内容都有注释,就不在这里赘述了。
特别是在查找本地的字体文件时可以通过Everything
去搜索某个字体文件。
from PIL import Image
from PIL import ImageFont
from PIL import ImageDraw
import random
# 返回随机字母或数字
def rand_char():
if random.randint(0,1):
return chr(random.randint(65, 90))
else:
return str(random.randint(0,9))
# 返回随机颜色
def rand_color():
return (random.randint(64, 255), random.randint(64, 255), random.randint(64, 255))
def func_code():
width=240
height=60
# 创建img对象
img = Image.new("RGB", (width, height), (255, 255, 255))
# 创建Font对象
font = ImageFont.truetype(r"C:\Windows\Fonts\arialbd.ttf", size=36)
# 创建Draw对象
draw = ImageDraw.Draw(img)
# 填充每个像素
for x in range(width):
for y in range(height):
draw.point((x,y), fill=rand_color())
# 输出文字
for t in range(4):
draw.text((60*t+10, 10), rand_char(), fill=rand_color(), font=font)
# 未模糊前的图像
img.save("d:/imgs/test1.jpg", "jpeg")
# 模糊
img = img.filter(ImageFilter.BLUR)
# 模糊后的图像
img.save("d:/imgs/test2.jpg", "jpeg")
if __name__ == "__main__":
func_code()
pass
pillow进阶
更多详细内容请参考伟大的Pillow官网。