要做一个图片验证码,不想自己造轮子,就到网上找一些代码或者项目,找了一些代码都不大好使用还需要调试,git上的一些项目要么累赘,要么不好用,最后找到了这个simpel_captcha项目,简单轻巧又好用。我这里使用的是FastAPI框架,这套程序也非常方便地结合 FastAPI 或者 starlette 中的StreamingResponse返回图片验证码,分享一下:本文地址:http://www.04007.cn/article/1175.html,未经许可,不得转载.
GITEE地址:https://toscode.gitee.com/antonizhu/simpel_captcha本文地址:http://www.04007.cn/article/1175.html,未经许可,不得转载.
里面就是captcha和img_captcha两相模块,captcha生成文字验证码,接受一个num参数,关系到生成的验证码位数,img_captcha生成图片验证码, 返回数据为元组 (Image| BytesIO, captcha)。本文地址:http://www.04007.cn/article/1175.html,未经许可,不得转载.
#调用img_captcha生成图片验证码 from fastapi import FastAPI from fastapi.responses import StreamingResponse from simpel_captcha import img_captcha app = FastAPI() @app.get("/captcha", summary='返回图片验证码') def image_captcha(): #img_captcha可以传递width,height,font_size控制图片验证码和大小和字体大小 image, text = img_captcha(byte_stream=True) print(f'图片对象: {image}') print(f'验证码: {text}')) #将验证码缓存到Redis中 return StreamingResponse(content=image, media_type='image/jpeg')本文地址:http://www.04007.cn/article/1175.html,未经许可,不得转载.
补充一下,在使用的时候,建议把其源码中的ascii_lowercase和ascii_uppercase字母源里的小写的l、o和大写的O字母去掉了,这两个字线和数字0,1会不好区分。这个源码中是没有删掉的。本文地址:http://www.04007.cn/article/1175.html,未经许可,不得转载.
本文地址:http://www.04007.cn/article/1175.html 未经许可,不得转载. 手机访问本页请扫描右下方二维码.
![]() |
![]() |
手机扫码直接打开本页面 |