Python小程序之验证码图片生成_小程序图片验证码后端生成-程序员宅基地

技术标签: python  

python小程序之验证码图片的生成
  • 定义随机字母的生成函数
  • 定义随机颜色生成函数,采用RGB格式,生成一个元组
  • 调用Image,生成画布,填充底色为白色
  • 调用画笔函数Draw,传入画布对象
  • 填充画布的每一个色块,作为背景
  • 在画布上控制间距,填上每一个字
  • 在最后的图上进行模糊操作
代码
# 生成一个随机的二维码小程序
from PIL import Image,ImageDraw,ImageFont,ImageFilter
import random

# 随机抽取字母
def rndChar():
    return chr(random.randint(65,90))

# 随机颜色1,采用RGB的方式,随机生成三维的坐标:
def rndColor():
    return (random.randint(64,255),
            random.randint(64,255),
            random.randint(64,255))

# 随机颜色2:
def rndColor2():
    return (random.randint(64,127),
            random.randint(64,127),
            random.randint(64,127))

# 240 X 60
width = 60 * 4
height = 60
# 生成一个画布
image = Image.new('RGB',(width,height),(255,255,255))
# 创建一个Font对象
font = ImageFont.truetype('ACaslonPro-Bold',36)
# 创建Draw对象
draw = ImageDraw.Draw(image)
# 填充每一个像素
for x in range(width):
    for y in range(height):
        draw.point((x,y),fill = rndColor())
# 输出文字
for t in range(4):
    draw.text((60 * t + 10 ,10),rndChar(),
              font = font,fill= rndColor2())
# 模糊
image = image.filter(ImageFilter.BLUR)
image.save('code.jpg','jpeg')

在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Blackoutdragon/article/details/105720357

智能推荐

Lingo (Spring Remoting) : Passing client credentials to the server-程序员宅基地

文章浏览阅读103次。http://www.jroller.com/sjivan/entry/lingo_spring_remoting_passing_clientLingo (Spring Remoting) : Passing client credentials to the serverSpring Remoting allows you to export a service interface w..._clientcontextholder

Codova 创建项目,引用jar提示java.lang.VerifyError_codova aar-程序员宅基地

文章浏览阅读307次。背景说明:Android原生的开发包是直接通过gradle加载aar使用,由于客户需要模块的cordova插件,于是只能引用aar解压出来的jar包,通过cordova创建项目,指定Android平台,引入插件,然后编译安装(此时创建的项目可以通过AndroidStudio打开)Cordova创建的项目 在Android6.0上跑报如下错误,字面上看java编译器拒绝编译这个类Re..._codova aar

L1-023 输出GPLT-程序员宅基地

文章浏览阅读487次,点赞13次,收藏10次。给定一个长度不超过10000的、仅由英文字母构成的字符串。请将字符重新调整顺序,按这样的顺序输出,并忽略其它字符。当然,四种字符(不区分大小写)的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按GPLT的顺序打印,直到所有字符都被输出。_l1-023 输出gplt

element-ui中el-pagination分页组件,切换每页显示数量时,有时候数据不显示或获取到的数据为空;只想触发size-change事件不触发current-change事件_element-ui 分页展示数据 不全-程序员宅基地

文章浏览阅读1.3w次,点赞9次,收藏20次。element-ui中el-pagination分页组件使用注意事项切换每页显示数量时,有时候数据不显示或获取到的数据为空el-pagination组件只想触发size-change事件不触发current-change事件_element-ui 分页展示数据 不全

嵌入式面试题 C C++ 队列面试题总结-程序员宅基地

文章浏览阅读864次,点赞19次,收藏20次。你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!” />你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!更多资料点击此处获qu!!

Android热修复原理热修复框架对比和代码修复-程序员宅基地

文章浏览阅读750次,点赞26次,收藏20次。在Android应用开发中,热修复技术被越来越多的开发者所使用,也出现了很多热修复框架,比如:AndFix、Tinker、Dexposed和Nuwa等等。如果只是会这些热修复框架的使用那意义并不大,我们还需要了解它们的原理,这样不管热修复框架如何变化,只要基本原理不变,我们就可以很快的掌握它们。这一个系列不会对某些热修复框架源码进行解析,而是讲解热修复框架的通用原理。

随便推点

SM2259XT2量产工具下载方法,SM2259XT2硬盘开卡修复满血复活,SM2259XT2固件,SM2259XT2量产图文教程_sm2258xt量产工具下载-程序员宅基地

文章浏览阅读482次,点赞7次,收藏4次。​我这个固态是SM2259XT2和海力士HY3D-V7的搭配,就得从量产部落找这个组合的量产工具。_sm2258xt量产工具下载

【BSV无限可能】区块链的商业应用_bsv 跨链能力-程序员宅基地

文章浏览阅读491次。2023年2月在斯洛文尼亚的一个专属会场,nChain首席科学家Craig S. Wright博士举办了自己新一期的比特币大师班。比特币大师班课程是月度系列活动,旨在帮助参会者学习比特币的基本原理及其背后的技术知识。_bsv 跨链能力

2019校招前端笔试面试题_javaee为什么前端某个数据状态发生变化只发生在用户本地,不会影响到其他用户-程序员宅基地

文章浏览阅读1.6w次,点赞38次,收藏261次。前期概要:01你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么?答案IE:trident内核Firefox:gecko内核Safari:webkit内核Opera:以前是presto内核,Opera现已改用Google Chrome的Blink内核Chrome:Blink(基于webkit,Google与Opera Software共同开发)02Javas..._javaee为什么前端某个数据状态发生变化只发生在用户本地,不会影响到其他用户

无线通信中的TD系统(TD-LTE)-程序员宅基地

文章浏览阅读850次。5G中的核心技术_td系统

Linux系统中最佳开源电子邮件服务器_linux邮件服务器有哪些-程序员宅基地

文章浏览阅读1.1k次,点赞27次,收藏20次。以上是Linux系统中备受推荐的开源电子邮件服务器,包括了Postfix、Exim、Dovecot、OpenSMTPD、Mailcow和iRedMail。每种邮件服务器都有其独特的特点和优势,适用于不同的部署场景和需求。希望本文的介绍能够帮助大家选择适合的最佳开源邮件服务器,并建立稳定、安全的邮件系统。更多Python学习内容:ipengtao.com点击下方“阅读原文”查看更多。_linux邮件服务器有哪些

a-select-程序员宅基地

文章浏览阅读712次。a-select支持搜索_a-select

推荐文章

热门文章

相关标签