python的PIL模块实现验证码功能

from PIL import Image
from PIL import ImageDraw
import io
import redis
import random # 定义ip和端口 host = 'localhost' port = 6379 # 建立连接 r = redis.Redis(host=host, port=port) # 定义验证码 class MyCode(View): # 定义rgb颜色 def get_random_color(self): R = random.randrange(255) G = random.randrange(255) B = random.randrange(255) return (R, G, B) # 定义图片视图 def get(self, request): # 画布 img_size = (120, 50) # 定义图片对象 image = Image.new('RGB', img_size, 'white') # 定义画笔 draw = ImageDraw.Draw(image, 'RGB') danom_zimu = '0123456789abcdefghijklmnopqrsy' # 接受容器 code_str = '' # 进入循环绘制 for i in range(4): # 获取字母颜色 text_color = self.get_random_color() # 获取随机下标 random_num = random.randrange(len(source)) # 随机字符串 random_str = source[tmp_num] # 装入容器 code_str += random_str # 绘制字符串 draw.text((10+30*i, 20), random_str, text_color) # 获取缓存区 buf = io.BytesIO() # 将临时图片保存到缓冲 image.save(buf, 'png') # 保存随机码,存入redis r.set('yan', code_str) # 保存session # request.session['yan'] = code_str return HttpResponse(buf.getvalue(), 'image/png')