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')
其他功能如切片、旋转、滤镜、输出文字、调色板等一应俱全。