首页 > 其他分享 >随机生成图片验证码

随机生成图片验证码

时间:2023-11-10 09:45:56浏览次数:34  
标签:code randint image random 验证码 生成 captcha 随机

随机生成验证码

from PIL import Image, ImageDraw, ImageFont import random 

随机颜色1(背景颜色):

def rndColor(): return (random.randint(170, 250), random.randint(170, 250), random.randint(170, 250)) 

随机颜色2(数字或字母颜色):

def rndColor2(): return (random.randint(0, 127), random.randint(0, 127), random.randint(0, 127)) 

生成随机验证码文本

def generate_random_code(code_length): code_chars = '0123456789abcdefghjkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ-_*#$%' # 0123456789abcdefghjkmnpqrstuvwxyz code = '' for _ in range(code_length): code += random.choice(code_chars) return code 

生成验证码图片

def generate_captcha_image(width, height, code_length): 

创建一个空白图片

image = Image.new('RGBA', (width, height), (255, 255, 255)) draw = ImageDraw.Draw(image) for x in range(width): for y in range(height): draw.point((x, y), fill=rndColor()) 

选择字体和字体大小

font = ImageFont.truetype('arial.ttf', 20) 

生成随机验证码文本

code = generate_random_code(code_length) ascent, descent = font.getsize(code) # 这里拿到文字内容的大小 

将验证码文本绘制到图片上

    x = 1    #  width/2-ascent/2  # 这里是文字内容的居中绘制算法
    print(code)

    for i in range(6):
        draw.text((x+i*(width-2*x)/6, 0), code[i], font=font, fill=rndColor2())
    return image


def save_captcha_image(image, filename):
  image.save(filename)

调用生成验证码图片和保存验证码图片的函数

captcha_image = generate_captcha_image(80, 22, 6) save_captcha_image(captcha_image, 'captcha.png') img = Image.open(('captcha.png')) Image._show(img) 

标签:code,randint,image,random,验证码,生成,captcha,随机
From: https://www.cnblogs.com/HeroZhang/p/17823392.html

相关文章

  • 基于ARIMA、SVM、随机森林销售的时间序列预测|附代码数据
    原文链接  http://tecdat.cn/?p=1130最近我们被客户要求撰写关于时间序列预测的研究报告,包括一些图形和统计输出。如今DT(数据技术)时代,数据变得越来越重要,其核心应用“预测”也成为互联网行业以及产业变革的重要力量。对于零售行业来说,预测几乎是商业智能(BI)研究的终极问题,单纯......
  • 获取随机数工具类
    1.通过Random获取随机数由System.Random中提供,它生成的数字被称为伪随机数,它是以相同的概率从一组有限的数字中选取的,所选的数字并不具有完全的随机性,但就实用而言,其随机程度已经足够了。实现思路:Randomr1=newRandom();inta1=r1.Next(1,100); 2.使用Guid生成随机......
  • SqlServer生成字符串主键
    ALTERPROCEDURE[dbo].[CreatePrimaryNo](@tblNamenvarchar(50),@filedNamenvarchar(50),@prefixnvarchar(50),@primaryNonvarchar(50)out) ASBEGINdeclare@Retnvarchar(4000)declare@currdaynvarchar(10)select@currday=convert(nvarchar(8),GETDA......
  • 银行APP虚拟金额软件,建设农业工商邮政余额生成器,易语言开源版
    用易语言开发了一个虚拟余额装逼软件,可以生成虚拟的余额截图,就是APP端的截图,用的画板组件,但是生成出来的图片是非常高清的,软件里面因为图片是缩放状态,所以看起来有点失真的感觉,生成图片的原理就是通过快照命令获取画板的句柄实现一个高清截图的效果,支持选择很多模版我都加进去了,但......
  • Python美丽图案生成方法
    使用samila库可以生成美丽的图案,例如:#pipinstallsamila==1.1orpip3installsamila==1.1importmatplotlib.pyplotaspltfromsamilaimportGenerativeImage#g=GenerativeImage()#g.generate()#g.plot()#plt.show()importrandomimportmathdeff1(x......
  • 招商银行余额截图生成器在线,虚拟金额中国农业邮政建设工商,易语言开源例子
    其实用易语言的画板写一个图片生成器真的非常简单,我这里都没用任何第三方的支持库,当然也可以用EXUI画板自绘功能,但是用这个默认的就足够了,而且画出来的图非常高清,软件框架里面比较模糊因为缩放的原因,然后主要实现功能就是用标签挡住了余额截图上面的关键字,标签要透明才行,然后通过......
  • IDEA 集成 EasyCode 插件,快速生成自定义 mybatisplus 代码
    IDEA集成easyCode插件在idea插件市场中,搜索EasyCode插件,下载并进行安装EasyCode插件介绍1.修改作者名称EasyCode插件可以修改作者名称,即生成代码后,注释中自动添加相应作者的姓名。2.TypeMapperTypeMapper指的是生成mapper.xml文件中数据库中的字段和java......
  • vue3中使用qrcode生成二维码
    安装npminstall--saveqrcode.vueoryarnaddqrcode.vue组件中使用<scriptsetuplang="ts">import{useUiSetStore}from'@store/modules/uiSettings'//导入二维码组件importQrcodeVuefrom'qrcode.vue'constui=useUiSetStore()......
  • plop工具使用:自动生成模板代码
    (一)大概的步骤:1.npm安装2.创建plopfile.js配置文件(配置与步骤3中文件的对应关系)3.创建相关模板文件4.package.json中配置运行命令(二)具体操作如下:1.安装npminstall--save-devplop2.根目录添加plopfile.js文件functionvalidate(v){if(/[[\u4E00-\u9FA5]|[\uF......
  • 电子公章怎么制作?1分钟免费在线生成
    电子公章已经成为很多企业日常运营中不可或缺的一部分。那么,电子公章怎么制作呢?是否需要专业的电子公章制作工具?是否存在免费在线生成电子公章的选项?本文将为你揭示如何一分钟免费在线生成电子公章,解答你对电子公章如何制作的种种疑惑。首先,电子公章的制作需要依托于专业正规的电子......