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

BBS论坛(十二)

2025年01月14日 02:16:50
news.like.tgnews.like.tgnews.like.tgnews.like.tg

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生态链-全球资源互联社区】连接全球出海营销资源。

本文由LIKE.TG编辑部转载自互联网并编辑,如有侵权影响,请联系官方客服,将为您妥善处理。

This article is republished from public internet and edited by the LIKE.TG editorial department. If there is any infringement, please contact our official customer service for proper handling.


Server deployment全球论坛人工智能论坛全球峰会发展论坛战略论坛开放论坛程序员论坛互联网峰会科技峰会
加入like.tg生态圈,即可获利、结识全球供应商、拥抱全球软件生态圈加入like.tg平台,即可获利、结识全球供应商、拥抱全球营销软件生态圈加入like.tg生态资源圈,即可获利、结识全球供应商、拥抱全球软件生态圈
加入like.tg生态圈,即可获利、结识全球供应商、拥抱全球软件生态圈加入like.tg平台,即可获利、结识全球供应商、拥抱全球营销软件生态圈加入like.tg生态资源圈,即可获利、结识全球供应商、拥抱全球软件生态圈