当前位置: 首页 > news >正文

python本地生成验证码图片

from io import BytesIO
from PIL import Image, ImageDraw, ImageFont
from captcha.image import ImageCaptcha
import random, stringdef get_captcha_picture():chr_all = string.ascii_uppercase + string.digits  # 只使用大写字母和数字,避免混淆chr_4 = ''.join(random.sample(chr_all, 4))# 使用PIL创建验证码图片(替代ImageCaptcha)width, height = 120, 40image = Image.new('RGB', (width, height), color=(240, 240, 240))draw = ImageDraw.Draw(image)try:# 尝试使用系统字体font = ImageFont.truetype("arial.ttf", size=24)except IOError:try:# 尝试其他常见字体font = ImageFont.truetype("DejaVuSans.ttf", size=24)except IOError:# 使用默认字体font = ImageFont.load_default()# 绘制验证码文本for i, char in enumerate(chr_4):x = 10 + i * 25 + random.randint(-3, 3)y = 5 + random.randint(-3, 3)draw.text((x, y), char, fill=(random.randint(0, 100), random.randint(0, 100), random.randint(0, 100)),font=font)# 添加干扰线for _ in range(3):x1 = random.randint(0, width)y1 = random.randint(0, height)x2 = random.randint(0, width)y2 = random.randint(0, height)draw.line((x1, y1, x2, y2), fill=(random.randint(150, 200), random.randint(150, 200), random.randint(150, 200)),width=1)# 添加噪点for _ in range(50):x = random.randint(0, width - 1)y = random.randint(0, height - 1)draw.point((x, y), fill=(random.randint(150, 200), random.randint(150, 200), random.randint(150, 200)))# 将图片转换为二进制数据buffered = BytesIO()image.save(buffered, format="JPEG", quality=95)  # 明确指定质量和格式return image
http://www.jsqmd.com/news/10623/

相关文章:

  • CentOS 7 一键安装 vsftpd 并创建可登录 FTP 用户 test - 教程
  • 破解工地防盗难题:如何利用国标GB28181视频平台EasyCVR实现视频监控统一管理?
  • autogen论文解读 - Sun
  • 高效仿真:功耗与散热攻略
  • 编程开发工具集合汇总
  • 各编程语言对应的开发工具软件
  • Vue Day7 VueX ESLint介绍
  • win7无线网络连接wifi名称乱码
  • 【完结】-固态硬盘ssd
  • Vue的nextTick函数作用
  • # 中国大模型落地应用研究报告2025 - 深度导读与趋势分析
  • # JetBrains 2024开发者生态调查报告推荐
  • # ShowMeBug技术评估创新案例:从八股文到实战编程的招聘革命
  • # ️ GitHub工程师肖恩戈德克的系统设计哲学:从复杂到简单的工程智慧
  • README生成和更新Prompt
  • #6515. 「雅礼集训 2018 Day10」贪玩蓝月
  • jsconfig.json-vscode或cursor ctrl点击@路径,快速到达
  • C# 弃元模式:从语法糖到性能利器的深度解析
  • python查询数据信息,分析前了解表格结构
  • 【SETUP】To debug the Neoverse N2 reference firmware
  • 减少磁盘延迟的方法
  • AutoCAD 2025 CAD 安装包中文永久免费免激活破解版下载 附图文安装教程
  • nmcli修改ip地址
  • 静态库与动态库:开发者必知的底层逻辑与实践技巧
  • 从C到pwn入门
  • 基于MATLAB的三轴航天器姿态控制的仿真
  • for循环s.length()-1,s为空时的一直执行循环的问题
  • 自适应工作负载的智能系统构建技术解析
  • aardio获取exe路径
  • 分布式系统学习(一):相关概念及理论