python制作图片验证码示例
主要用到python图片处理库-PIL库,同时需要注意字体.tff文件存放的具体目录,通常在/usr/share/fonts下,自己找找看
# coding:utf-8 import random import stringfrom PIL import Image, ImageDraw, ImageFont def createCaptcha(): #定义变量,用于画面的背景色、宽、高 bgcolor = (random.randrange(255),random.randrange(255),100) width = 100 height = 30 #创建画面对象 im = Image.new('RGB', (width, height), bgcolor) #创建画笔对象 draw = ImageDraw.Draw(im) #绘制50个噪点 for i in range(50): point_position = (random.randrange(width),random.randrange(height)) point_color = (random.randrange(255),random.randrange(255),random.randrange(255)) draw.point(point_position,point_color) #绘制2条干扰线 for i in range(2): start_position = (random.randrange(width),random.randrange(height)) end_position = (random.randrange(width),random.randrange(height)) line_color = (random.randrange(255),random.randrange(255),random.randrange(255)) draw.line([start_position,end_position],line_color) #定义验证码的备选值 str1 = string.ascii_letters+string.digits #大小写字母+数字共62个 #随机选取5个值作为验证码 rand_str = '' for i in range(5): rand_str += str1[random.randrange(len(str1))] #字体 font_type = 'arial.ttf' #字体类型 font_size = 20 #字体大小 #构造字体对象 font = ImageFont.truetype(font_type,font_size) #构造字体颜色 fontcolor = (random.randrange(255),random.randrange(255),random.randrange(255)) #绘制5个字 for i in range(5): draw.text((20*i+random.randint(1,3),random.randint(0,1)),rand_str[i],font=font, fill=fontcolor) im.save(rand_str+'.png') #验证码内容命名图片,保存在当前目录下 if __name__ == '__main__': createCaptcha()