首页 > 其他 > 详细

随机生成简单验证码

时间:2020-06-04 17:20:46      阅读:49      评论:0      收藏:0      [点我收藏+]

from PIL import Image,ImageFont,ImageDraw,ImageFilter
import random
import string
import sys
import math

numbers=4
size=(150,60)
bgcolor=(255,255,255)
font_color=(0,0,0)
draw_line=True
line_numbers=(1,5)

 

#生成一个写字函数

def make_text():
source=[str(x) for x in range(0,10)]
source2=list(string.ascii_letters)
source.extend(source2)
return ‘‘.join(random.sample(source,numbers))

 

#生成一个划线函数

def make_line(draw,width,height):
begin=(random.randint(0,width),random.randint(0,height))
end=(random.randint(0,width),random.randint(0,height))
draw.line([begin,end],fill=font_color,width=3)

#生成验证码
def make_codepng():
width,height=size #图片的宽度和高度
image=Image.new(mode=‘RGB‘,size=(width,height),color=bgcolor) #创建图片
draw=ImageDraw.Draw(image) #绘图工具
text=make_text() #生成随机字符串
font=ImageFont.truetype(‘simhei.ttf‘,40)
font_width,font_height=font.getsize(text) #得到字体的宽度和高度
draw.text(((width-font_width)/numbers,height-font_height),text,font=font,fill=font_color) #写入文字
if draw_line:
make_line(draw,width,height)

image=image.transform((width+40,height+30),Image.AFFINE,(1,-0.5,0,-0.2,0.9,0),Image.BILINEAR) #扭曲
image=image.filter(ImageFilter.EDGE_ENHANCE_MORE) #处理边界
image.save(r"D:\计算机二级\验证码"+"\\"+text+".png")
for i in range(100):
make_codepng()

随机生成简单验证码

原文:https://www.cnblogs.com/energetic/p/13044716.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!