pillow模块

pillow模块

用于操作图片的模块

安装

pip install pillow

生成验证码

from PIL import Image,ImageDraw,ImageFont
from io import BytesIO,StringIO
import random
def get_random():
    return random.randint(0,255),random.randint(0,255),random.randint(0,255)

def get_code(request):
    #生成图片,参数第一位为mode,第二位是size,第三位是颜色rgb
    img_obj = Image.new("RGB",(360,35),get_random())
    #生成画笔对象,在谁身上画,就把谁传进去
    img_draw = ImageDraw.Draw(img_obj)
    #生成字体对象,里面传字体文件路径和字号
    img_font = ImageFont.truetype('static/font/111.ttf',30)
    code = ''
    for i in range(5):
        upper_str = chr(random.randint(65,90))
        lower_str = chr(random.randint(97,122))
        random_int = chr(random.randint(48,57))
        tmp = random.choice([upper_str,lower_str,random_int])
        #使用画笔对象生成文字
        img_draw.text((i*60+60,0),tmp,get_random(),img_font)
        code += tmp
    print(code)
    request.session['code'] = code
    io_obj = BytesIO()
    img_obj.save(io_obj,'png')
    #返回一个字符串
    return HttpResponse(io_obj.getvalue())

说明:

生成五位数的随机验证码图片,

io模块用于直接在内存中操作图片,减少对硬盘的io操作.

图片的缩放

from PIL import Image

# 打开一个jpg图像文件,注意是当前路径:
im = Image.open('test.jpg')
# 获得图像尺寸:
w, h = im.size
print('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')

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

posted @ 2019-12-09 21:14  Agsol  阅读(155)  评论(0编辑  收藏  举报