2020.10.14 PIL & Pillow

PIL:Python Imaging Library,是Python事实上的图像处理标准库了。最近的优秀的兼容版本名字叫Pillow,因此我们可以直接安装使用Pillow。

补充:这里虽然安装了Pillow,但我们还是使用PIL,因为Pillow不是一个单独的库,而是对PIL的更新。

 

操作图像

1、读取图像文件并显示、保存

用到的库:Image

读取图像:Im=Image.open('path')

显示图像:Im.show()

保存图像:Im.save('文件名','扩展名')

图像尺寸:Im.size

创建画布:BackGround=Image.new(mode,size,color)

如果是RGB图像,大小为240x60,颜色为白色的背景板:

BG=Image.new('RGB',(240,60),(255,255,255))
from PIL import Image,ImageShow

#用with语句块打开更安全
with Image.open('test.jpg') as im:

    #图像尺寸
    w,h=im.size
    print('Original image size:%sx%s'%(w,h))

    #显示图像
    ImageShow.show(im)
    im.save('Test2.jpg','jpeg')

 

2、图像缩放

Im.thumbnail((new_width,new_height))

直接作用于图像对象Im,而没有返回值,不用另建变量存储

from PIL import Image,ImageShow

with Image.open('Test.jpg') as Im:
    w,h=Im.size
    Im.thumbnail((w//2,h//2)) #size写作一个tuple传入,而不是分开传入
    ImageShow.show(Im)

 

3、滤镜

需要用到库:ImageFilter

Im2=Im.filter(滤镜)

返回一个新的图像对象,需要用变量承接

 

from PIL import Image,ImageShow,ImageFilter

with Image.open('Test.jpg') as Im:
    Im2=Im.filter(ImageFilter.BLUR)#模糊滤镜
    Im2.show()

 

 

4、绘图

库:ImageDraw

用途:让我们直接绘图

练习:生成 字母验证码 图片

from PIL import Image,ImageFont,ImageDraw,ImageFilter
import random

#图像size
w=240
h=60

#将经常使用的函数用变量表示
ri=random.randint

#随机字符
def rndChar():
    return chr(ri(65,90))

#随机颜色1
def rndColor1():
    return (ri(64,255),ri(64,255),ri(64,255))

#随机颜色2
def rndColor2():
    return (ri(32,128),ri(32,128),ri(32,128))

#创建画布
Im=Image.new('RGB',(w,h),(255,255,255))#3个参数:mode、size、color
#创建draw对象
draw=ImageDraw.Draw(Im)
#为每个像素填充颜色
for x in range(w):
    for y in range(h):
        draw.point((x,y),fill=rndColor1())

#创建Font对象
font=ImageFont.truetype('arial.ttf',36)
#输出文字
for t in range(4):
    draw.text((60*t+10,10),rndChar(),font=font,fill=rndColor2())

#模糊处理
Im=Im.filter(ImageFilter.BLUR)
Im.show()

结果:

 

posted @ 2020-10-14 13:29  ShineLe  阅读(44)  评论(0)    收藏  举报