python 图形验证码的实现

python 图形验证码的实现

  • 导入pil库和ramdom库
from PIL import Image, ImageDraw, ImageFont, ImageFilter
import random
  • 1
  • 2
  • 创建画布
image1 = Image.new('RGBA', (120,60), (255,255,255,100))
  • 1

  • 创建一个画图对象

draw = ImageDraw.Draw(image1)

  • 1
  • 2

  • 声明随机颜色函数

    定义rand_color()为背景渲染的随机函数 定义rand_num_color()为数字验证码中数字的随机颜色

def rand_color():
    return random.randint(100,255),random.randint(100,255),random.randint(0,255)
def rand_num_color():
    return random.randint(0,100),random.randint(0,155),random.randint(0,100)
  • 1
  • 2
  • 3
  • 4
  • 渲染背景
for x in range(0,121):
    for y in range(0,61):
        draw.point((x,y), rand_color())
  • 1
  • 2
  • 3

  • 渲染文字

font1 = ImageFont.truetype('font/bb.ttf',25)
  • 1

  • 随机生成数字

for x in range(4):
    y = random.randint(10,40)
    num = str(random.randint(0,9))
    draw.text((x*30,y),num, (rand_num_color()),font1)
  • 1
  • 2
  • 3
  • 4

  • 显示

image1.show()
  • 1

完整代码

from PIL import Image, ImageDraw, ImageFont, ImageFilter
import random

Original: https://www.cnblogs.com/pxza/p/14048865.html
Author: 人生的激活码
Title: python 图形验证码的实现

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/580094/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • java中的set接口(Hashset,LinkedHashset,TreeSet)

    Hashset介绍 HashSet实际上是HashMap,底层都一样(数组+链表+红黑树) 不能有重复的元素,记住深入理解,可以添加不同的对象的,在前面的随笔中讲过了,只能有一个n…

    Java 2023年6月6日
    078
  • 基于Python来识别处理照片里的条形码

    最近一直在玩数独,突发奇想实现图像识别求解数独,输入到输出平均需要0.5s。 整体思路大概就是识别出图中数字生成list,然后求解。 输入输出demo 数独采用的是微软自带的Mic…

    Java 2023年6月7日
    070
  • SqlServer对表的基本操作

    SqlServer对表的基本操作 手动建库建表 脚本建库建表 SQL Server关系数据库的数据表结构主要是由记录(行)和字段(列)构成,每一行代表唯一的一条记录(Record)…

    Java 2023年6月15日
    060
  • SpringBoot 集成CAS简单学习

    CAS服务搭建 可以直接放在Tomcat中启动,这里可以为了方便直接用IDEA搭建启动。如果直接拉取示例代码以下内容都已修改完毕。拉取代码直接使用。 # 取消票根对应的Cookie…

    Java 2023年6月9日
    095
  • HIT软构博客7–学习UML类图

    UML的各种线和箭头到底是什么意思 1 泛化泛化表示⼀个更泛化的元素和⼀个更具体的元素之间的关系。即继承extends ⽤实线空⼼三角形箭头表⽰。箭头方向从子类到父类。 2实现 实…

    Java 2023年6月5日
    059
  • 8、BigInteger和BigDecimal类

    BigDecimal适合保存进度更高的浮点型(小数) 常见方法 add 加 subtract 减 multiply 乘 divide 除 //当我们编程中,需要处理很大的整数,lo…

    Java 2023年6月7日
    075
  • Mac下打开eclipse 始终提示 你需要安装Java SE 6 Runtime

    Mac下打开eclipse 始终提示 你需要安装Java SE 6 Runtime 周银辉 我的mac os 版本是10.9.2, JDK配置得好好的,但打开eclipse时还是提…

    Java 2023年5月29日
    067
  • MySQL中的WHERE和HAVING

    使用 GROUP BY语句时,有时会同时使用 WHERE和 HAVING,常常会因为搞不清楚要用哪个而写错,这里记录一下 TL;NRs WEHRE语句必须在 GROUP BY之前,…

    Java 2023年6月9日
    063
  • 常见的网页复制粘贴禁用问题

    1.网页无法选取文字 按下键盘的F12调出开发者工具,点击console控制台,输入以下代码后回车即可:解除网页无法选取文字 var eles = document.getElem…

    Java 2023年6月14日
    0122
  • PHP里的“夏令虫”

    今儿,我遇到一个大怪物 — 夏令虫 ╮(╯▽╰)╭,学艺不精,因为他掉进大坑里去了。坑是这样挖的: 以前,我为了表示当前时间的”明天”、&#82…

    Java 2023年5月29日
    072
  • 根据Map值 double 类型的进行排序

    /** * 将集合按照降序排列-Double * @param nowPartTwoData * @return */private static List> sortByV…

    Java 2023年6月13日
    089
  • SpringBoot中通过AOP整合日志文件

    1.SpringBoot中通过AOP整合日志文件 1. 导入相关的依赖 org.springframework.boot spring-boot-starter org.sprin…

    Java 2023年6月5日
    077
  • 想入门数据结构,却总是拜倒在链表的石榴裙下?

    大家好,我是melo,一名大二上软件工程在读生,经历了一年的摸滚,现在已经在工作室里边准备开发后台项目啦不过这篇文章呢,还是想跟大家聊一聊数据结构与算法,学校也是大二上才开设了数据…

    Java 2023年6月5日
    087
  • qemu创建aarch64虚拟机过程记录

    qemu装的是5.0版本,系统是红旗7.3(centos 7.3) 准备几个文件,一个是对应的系统镜像文件,一个是EFI文件。 QEMU_EFI.fd EFI文件主要是用来做引导的…

    Java 2023年5月30日
    093
  • Spring DefaultResourceLoader

    Spring DefaultResourceLoader Spring DefaultResourceLoader继承ResourceLoader接口,用来加载资源, 通过Reso…

    Java 2023年6月7日
    064
  • C# 多线程详解 Part.04(Lock、Monitor、生产与消费)

    /// /// 被操作的对象 /// public class Cell { /// /// Cell 对象里的内容 /// int cellContents; /// /// 状…

    Java 2023年5月29日
    062
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球