PIL 生成随机验证码图片
学习使用PIL生成随机验证码图片的实例!
效果:
![](http://upload-images.jianshu.io/upload_images/3073158-7c08a992f8a0d411.gif?imageMogr2/auto-orient/strip|imageView2/2/w/150/format/webp)
代码:
# 使用生成随机验证码图片 # Python 3.5.1 import string from random import randint, sample from PIL import Image, ImageDraw, ImageFont, ImageFilter # Image 负责处理图片 # ImageDraw 画笔 # ImageFont 文字 # ImageFileter 滤镜 # 定义变量 img_size = (150,50) # 定义画布大小 img_rgb = (255,255,255) # 定义画布颜色,白色 img = Image.new("RGB",img_size,img_rgb) img_text = " ".join(sample(string.ascii_letters+string.digits, 5)) # print(img_text.replace(' ','')) # 画图 drow = ImageDraw.Draw(img) for i in range(10): # 随机画线 drow.line([tuple(sample(range(img_size[0]),2)), tuple(sample(range(img_size[0]),2))], fill=(0,0,0)) for i in range(99): # 随机画点 drow.point(tuple(sample(range(img_size[0]),2)), fill=(0,0,0)) # 文字 font = ImageFont.truetype("simsun.ttc", 24) # 定义文字字体和大小 drow.text((6,6), img_text, font=font, fill="green") # 扭曲图片和滤镜 params = [ 1 - float(randint(1,2)) / 100, 0, 0, 0, 1 - float(randint(1,10)) /100, float(randint(1,2)) / 500, 0.001, float(randint(1,2)) / 500 ] img = img.transform(img_size, Image.PERSPECTIVE, params) img = img.filter(ImageFilter.EDGE_ENHANCE_MORE) # 展示图片 img.show()