Python 生成验证码 get_code()

生成验证码

import random
import string
from PIL import Image,ImageDraw,ImageFont,ImageFilter
# 字体的位置
font_path='/opt/WebStorm-172.3544.34/jre64/lib/fonts/DroidSans.ttf '
# 生成几位数字的验证码
number=4
# 生成验证码图片的高度和宽度
size=(100,30)
# 背景颜色,通过RGB颜色对照表选取合适的颜色
bgcolor=(255,218,185)
# 字体颜色,通过RGB颜色对照表选取合适的颜色
fontcolor=(100,149,237)
# 干扰线颜色
linecolor=(0,255,0)
# 是否需要加干扰线
draw_line=True
# 加入干扰线数量的上下限
line_number=(1,3)


# 用来随机生成一个字符串
def get_text():
    source=string.ascii_letters
    return ''.join(random.sample(source,number))#number表示生成验证码的数量
# 用来绘制干扰线
def get_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)
# 生成验证码
def get_code():
    width,height=size   #宽和高
    image=Image.new('RGBA',(width,height),bgcolor) #创建图片
    font=ImageFont.truetype(font_path,25)  #验证码的字体和字体大小
    draw=ImageDraw.Draw(image)   #创建画笔
    text=get_text()   #生成字符串
    font_width,font_height=font.getsize(text)
    draw.text(((width - font_width) / number, (height - font_height) / number), text,
              font=font, fill=fontcolor)
    if draw_line:
        get_line(draw,width,height)
    image=image.filter(ImageFilter.EDGE_ENHANCE_MORE)  #边界加强
    image.save('idencode.png','png')
    return image,text
if __name__ == '__main__':
    get_code()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值