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

Python生成随机验证码

pip install pillow

实现代码

import random
from PIL import Image, ImageDraw, ImageFont,ImageFilterdef check_code(width=120, height=30, char_length=5, font_file='kumo.ttf', font_size=28):code = []img = Image.new(mode='RGB', size=(width, height), color=(255, 255, 255))draw = ImageDraw.Draw(img, mode='RGB')def rndChar():"""生成随机字母   :return:"""return chr(random.randint(65, 90))def rndColor():"""生成随机颜色:return:"""return (random.randint(0, 255), random.randint(10, 255), random.randint(64, 255))# 写文字font = ImageFont.truetype(font_file, font_size)for i in range(char_length):char = rndChar()code.append(char)h = random.randint(0, 4)draw.text([i * width / char_length, h], char, font=font, fill=rndColor())# 写干扰点for i in range(40):draw.point([random.randint(0, width), random.randint(0, height)], fill=rndColor())# 写干扰圆圈for i in range(40):draw.point([random.randint(0, width), random.randint(0, height)], fill=rndColor())x = random.randint(0, width)y = random.randint(0, height)draw.arc((x, y, x + 4, y + 4), 0, 90, fill=rndColor())# 画干扰线for i in range(5):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=rndColor())img = img.filter(ImageFilter.EDGE_ENHANCE_MORE)return img, ''.join(code)if __name__ == '__main__':# 1. 直接打开# img,code = check_code()# img.show()# 2. 写入文件img, code = check_code()with open('code.png', 'wb') as f:img.save(f, format='png')# 3. 写入内存(Python3)# from io import BytesIO# stream = BytesIO()# img.save(stream, 'png')# stream.getvalue()# 4. 写入内存(Python2)# import StringIO# stream = StringIO.StringIO()# img.save(stream, 'png')# stream.getvalue()# pass

效果

 

http://www.lryc.cn/news/56600.html

相关文章:

  • Longitudinal Change Detection on Chest X-rays Using Geometric Correlation Maps
  • 5年功能测试的一些心得
  • 在外包做了3年测试,离职后却成功入职字节跳动.....
  • 网络编程套接字( TCP )
  • QT 判断当前操作系统是否为 Windows 8 及以下版本
  • 走进小程序【五】微信小程序架构之【逻辑层】详解
  • mysql workbench使用教程
  • 蓝易云:Linux系统常用命令-系列【3】
  • Nginx实现会话保持,集群模式下session域共享
  • 【SpringMVC】6—SpringMVC拦截器
  • 【算法】插入排序
  • java servlet 期刊在线投稿系统jsp编程sqlserver数据库mvc模式开发计算机网页设计
  • 命名空间和程序集
  • 108、指针进阶
  • arm平台交叉编译rt-tests
  • Melis4.0[D1s]:5.测试笔记 - 修改显示测试源码
  • yolov7目标检测:基于自定义数据集完成检测、训练、测试
  • 托福高频真词List13 // 附托福TPO阅读真题
  • 动力节点王鹤SpringBoot3笔记——第八章 文章管理模块
  • ROS功能包|mav_control_rw(基于MPC的无人机轨迹跟踪控制)---gazebo仿真测试
  • iOS 内存管理机制与原理
  • Linux之父:连你自己都懒得解释,那这就是一堆垃圾!
  • 二战华为成功上岸,准备了小半年,要个27k应该也算不上很高吧~
  • 全国青少年电子信息智能创新大赛(复赛)python·模拟三卷,含答案解析
  • 服务网关选型指南
  • 华为OD机试-查找充电设备组合-2022Q4 A卷-Py/Java/JS
  • 免费好用的oa系统有哪些?盘点这几款!
  • 光伏发电系统模拟及其发电预测开源python工具pvlib
  • 精彩回顾 | 2023工赋Meetup—上海站
  • [oeasy]python0132_[专业选修]utf-8_unicode_transformation_format_8_编码方式