Pillow模块学习

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官网

参考网址

廖雪峰老师的Python教程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章