请教生成如图验证码的python算法

Python015

请教生成如图验证码的python算法,第1张

def gene_text():

source = list(string.letters)

for index in range(0,10):

source.append(str(index))

return ''.join(random.sample(source,number))#number是生成验证码的位数

然后我们要创建一个图片,写入字符串,需要说明的这里面的字体是不同系统而定,如果没有找到系统字体路径的话,也可以不设置

def gene_code():

width,height = size #宽和高

image = Image.new('RGBA',(width,height),bgcolor) #创建图片

font = ImageFont.truetype(font_path,25) #验证码的字体和字体大小

draw = ImageDraw.Draw(image) #创建画笔

text = gene_text() #生成字符串

font_width, font_height = font.getsize(text)

draw.text(((width - font_width) / number, (height - font_height) / number),text,

font= font,fill=fontcolor) #填充字符串

接下来,我们要在图片上画几条干扰线

#用来绘制干扰线

def gene_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 = linecolor)

最后创建扭曲,加上滤镜,用来增强验证码的效果。

image = image.transform((width+20,height+10), Image.AFFINE, (1,-0.3,0,-0.1,1,0),Image.BILINEAR) #创建扭曲

image = image.filter(ImageFilter.EDGE_ENHANCE_MORE) #滤镜,边界加强

image.save('idencode.png') #保存验证码图片

如果是想让代码识别的话,要看验证码的复杂程度了,如果比较简单,使用图像处理说不定可以解决(我不会,不过网上应该有资料,就算没有python的,其他语言的也有),但是如果是复杂的,建议你把验证码下载下来,如果有图形界面,就在界面中显示...