官方社群在线客服官方频道防骗查询货币工具

BBS论坛(十二)

BBS论坛(十二)阿立
2025年01月14日📖 4 分钟
LIKE.TG 社交媒体链接LIKE.TG 社交媒体链接LIKE.TG 社交媒体链接LIKE.TG 社交媒体链接
Fansoso粉丝充值系统

LIKE.TG | 发现全球营销软件&服务汇聚顶尖互联网营销和AI营销产品,提供一站式出海营销解决方案。唯一官网:www.like.tg

12.1.图形验证码生成

(1)utils/captcha/init.py

代码语言:javascript
复制
import random import string # Image:一个画布 # ImageDraw:一个画笔 # ImageFont:画笔的字体 from PIL import Image,ImageDraw,ImageFont # pip install pillow # Captcha验证码 class Captcha(object): # 生成几位数的验证码 number = 4 # 验证码图片的宽度和高度 size = (100,30) # 验证码字体大小 fontsize = 25 # 加入干扰线的条数 line_number = 2 # 构建一个验证码源文本 SOURCE = list(string.ascii_letters) for index in range(0, 10): SOURCE.append(str(index)) #用来绘制干扰线 @classmethod def __gene_line(cls,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 = cls.__gene_random_color(),width=2) # 用来绘制干扰点 @classmethod def __gene_points(cls,draw,point_chance,width,height): chance = min(100, max(0, int(point_chance))) # 大小限制在[0, 100] for w in range(width): for h in range(height): tmp = random.randint(0, 100) if tmp > 100 - chance: draw.point((w, h), fill=cls.__gene_random_color()) # 生成随机的颜色 @classmethod def __gene_random_color(cls,start=0,end=255): random.seed() return (random.randint(start,end),random.randint(start,end),random.randint(start,end)) # 随机选择一个字体 @classmethod def __gene_random_font(cls): fonts = [ 'msyh.ttf', 'msyhbd.ttf', 'simkai.ttf', 'simsun.ttc', 'webdings.ttf' ] font = random.choice(fonts) # print(font) return 'utils/captcha/'+font # 用来随机生成一个字符串(包括英文和数字) @classmethod def gene_text(cls, number): # number是生成验证码的位数 return ''.join(random.sample(cls.SOURCE, number)) #生成验证码 @classmethod def gene_graph_captcha(cls): # 验证码图片的宽和高 width,height = cls.size # 创建图片 # R:Red(红色)0-255 # GG(绿色)0-255 # BB(蓝色)0-255 # A:Alpha(透明度) image = Image.new('RGBA',(width,height),cls.__gene_random_color(0,100)) # 验证码的字体 font = ImageFont.truetype(cls.__gene_random_font(),cls.fontsize) # 创建画笔 draw = ImageDraw.Draw(image) # 生成字符串 text = cls.gene_text(cls.number) # 获取字体的尺寸 font_width, font_height = font.getsize(text) # 填充字符串 draw.text(((width - font_width) / 2, (height - font_height) / 2),text,font= font,fill=cls.__gene_random_color(150,255)) # 绘制干扰线 for x in range(0, cls.line_number): cls.__gene_line(draw, width, height) # 绘制噪点 cls.__gene_points(draw, 10, width, height) # with open('captcha.png','wb') as fp: # image.save(fp) return (text,image)

(2)在utils/captcha文件下面放几种字体

(3)front/views.py

代码语言:javascript
复制
@bp.route('/captcha/') def graph_captcha(): text,image = Captcha.gene_graph_captcha() out = BytesIO() image.save(out,'png') #指定格式为png out.seek(0) #把指针指到开始位置 resp = make_response(out.read()) resp.content_type = 'image/png' return resp

(4)生成验证码

运行项目,浏览器访问:http://127.0.0.1:5000/captcha/,可以看到生成的随机验证码

官方客服

LIKE.TG汇集全球营销软件&服务,助力出海企业营销增长。提供最新的“私域营销获客”“跨境电商”“全球客服”“金融支持”“web3”等一手资讯新闻。

点击【联系客服】 🎁 免费领 1G 住宅代理IP/proxy, 即刻体验 WhatsApp、LINE、Telegram、Twitter、ZALO、Instagram、signal等获客系统,社媒账号购买 & 粉丝引流自助服务或关注【LIKE.TG出海指南频道】【LIKE.TG生态链-全球资源互联社区】连接全球出海营销资源。


Banner广告
Banner广告
Banner广告
Banner广告
全球峰会
Server deployment