python 生成随机图片验证码
1.安装pillow模块
- pip install pillow
(1)创建图片
- from PIL import Image
- #定义使用Image类实例化一个长为400px,宽为400px,基于RGB的(255,255,255)颜色的图片
- img1=Image.new(mode="RGB",size=(400,400),color=(255,255,255))
- #把生成的图片保存为"pic.png"格式
- with open("pic.png","wb") as f:
- img1.save(f,format="png")
- #显示图片
- img1.show()
运行程序,程序会在py文件的同级下生成一个名为"pic.png"的小图片,图片长为400px,宽为400px,颜色为白色
(2)创建笔画
- #创建画笔,用于在图片上生成内容
- draw1=ImageDraw.Draw(img1,mode="RGB")
- 3.在图片上生成点
- #在(100,100)坐标上生成一个红点,指定的坐标不能超过图片的尺寸
- draw1.point([100,100],pill="red")
- #在(80,80)坐标上生成一个黑点,指定的坐标不能超过图片的尺寸
- draw1.point([80,80],fill=(0,0,0))
- 4.在图片上画线
- #第一个括号里面的参数是坐标,前两个数为开始坐标,后两个数为结束坐标
- #括号里的第二个参数指定颜色,可以直接指定,也可以用RGB来表示颜色
- draw1.line((100,100,100,300),fill="red")
- draw1.line((100,200,200,100),fill="blue")
- 运行程序,画笔会在(100,100)到(100,300)坐标之间画一条红色的竖线,在(100,200)到(200,100)坐标之间画一根蓝色的斜线
- 5.在图片在画圆
- #括号里的第一个参数是坐标,前两个数为起始坐标,后两个为结束坐标
- #用这两个坐标之间的正方形区域生成一个圆,大括号里的第二个参数为圆的开始角度
- #第三个参数为圆的结束角度,0到360表示所画的是一个完整的圆形,
- #也可以指定的数字来生成一段为圆弧,最后一个参数表示颜色,也可以用RGB来表示想要的颜色
- draw1.arc((100,100,300,300),0,360,fill="red")
- draw1.arc((0,0,300,300),0,90,fill="blue")
- 6.在图片在写文本
- #使用画笔的text方法在图片上生成文本
- #第一个参数为坐标,第二个参数为所有生成的文本的内容
- #第三个参数为文本的颜色
- draw1.text([0,0],"python","blue")
- 7.在图片在生成指定字体的文本
- #先实例化一个字体对象,第一个参数表示字体的路径,第二个参数表示字体大小
- font1=ImageFont.truetype("One Chance.ttf",28)
- #在图片上生成字体
- #第一个括号里的参数表示坐标,第二个参数表示写入的内容
- #第三个参数表示颜色,第四个参数表示使用的字体对象
- draw1.text([200,200],"linux","red",font=font1)
验证码实例
- #导入random模块
- import random
- #导入Image,ImageDraw,ImageFont模块
- from PIL import Image,ImageDraw,ImageFont
- #定义使用Image类实例化一个长为120px,宽为30px,基于RGB的(255,255,255)颜色的图片
- img1=Image.new(mode="RGB",size=(120,30),color=(255,255,255))
- #实例化一支画笔
- draw1=ImageDraw.Draw(img1,mode="RGB")
- #定义要使用的字体
- font1=ImageFont.truetype("One Chance.ttf",28)
- for i in range(5):
- #每循环一次,从a到z中随机生成一个字母或数字
- #65到90为字母的ASCII码,使用chr把生成的ASCII码转换成字符
- #str把生成的数字转换成字符串
- char1=random.choice([chr(random.randint(65,90)),str(random.randint(0,9))])
- #每循环一次重新生成随机颜色
- color1=(random.randint(0,255),random.randint(0,255),random.randint(0,255))
- #把生成的字母或数字添加到图片上
- #图片长度为120px,要生成5个数字或字母则每添加一个,其位置就要向后移动24px
- draw1.text([i*24,0],char1,color1,font=font1)
- #把生成的图片保存为"pic.png"格式
- with open("pic.png","wb") as f:
- img1.save(f,format="png")
python 生成随机图片验证码的更多相关文章
- springboot搭建项目,实现Java生成随机图片验证码。
这篇文章主要介绍了如何通过Java如何生成验证码并验证.验证码的作用我想必大家都知道,话不多说开始实施! 首先创建一个springboot项目以下是项目结构,内有utli工具类.存放生成图片验证码方法 ...
- Java生成随机图片验证码
前台html代码 [Java] 纯文本查看 复制代码 ? 01 02 03 04 05 06 07 08 09 10 <div style="margin-top: 50px;&quo ...
- python随机图片验证码的生成
Python生成随机验证码,需要使用PIL模块. 安装: 1 pip3 install pillow 基本使用 1. 创建图片 1 2 3 4 5 6 7 8 9 from PIL import Im ...
- Python 生成随机验证码
Python生成随机验证码 Python生成随机验证码,需要使用PIL模块. 安装: 1 pip3 install pillow 基本使用 1. 创建图片 1 2 3 4 5 6 7 8 9 fro ...
- Python生成随机验证码
Python生成随机验证码,需要使用PIL模块. 安装: pip3 install pillow 基本使用 1.创建图片 from PIL import Image img = Image.new(m ...
- python生成随机日期字符串
python生成随机日期字符串 生成随机的日期字符串,用于插入数据库. 通过时间元组设定一个时间段,开始和结尾时间转换成时间戳. 时间戳中随机取一个,再生成时间元组,再把时间元组格式化输出为字符串 # ...
- Python生成随机字符串
利用Python生成随机域名等随机字符串. #!/usr/bin/env python# -*- coding: utf-8 -*- from random import randrange, cho ...
- python生成随机整数
python生成随机不重复的整数,用random中的sample index = random.sample(range(0,10),10) 上面是生成不重复的10个从1~10的整数 python生成 ...
- Python 实现简单图片验证码登录
朋友说公司要在测试环境做接口测试,登录时需要传入正确的图片的验证码,本着懒省事的原则,推荐他把测试环境的图片验证码写死,我们公司也是这么做的^_^.劝说无果/(ㄒoㄒ)/~~,只能通过 OCR 技术来 ...
随机推荐
- 19.Longest Substring Without Repeating Characters(长度最长的不重复子串)
Level: Medium 题目描述: Given a string, find the length of the longest substring without repeating cha ...
- 10-排序6 Sort with Swap(0, i) (25 分)
Given any permutation of the numbers {0, 1, 2,..., N−1}, it is easy to sort them in increasing order ...
- IO文件夹拷贝(文件内含有文件和文件夹)
/** * 文件夹拷贝(文件内含有文件和文件夹) * * @param src * @param des */ private static void copy(String src, String ...
- UntraEdit 语法高亮 (MSSQL)
http://www.ultraedit.com/downloads/extras/wordfiles.html 这里有ue 支持的语言的uew文件. 需要把下载的语法文件放到: %APPDATA%\ ...
- CVE-2015-1635(MS15-034 )进行DOS攻击
上一篇的文章方法进行检测漏洞是否存在,接着我们搭建win2008进行DOS攻击测试,导致服务器蓝屏,异常关机. 靶机:windows2008 IIS7.0 192.168.31.91 攻 ...
- Java日志组件1---Jdk自带Logger(java.util.logging.Logger)
最近在看日志的一些东西,发现利用JDK自带的log也可以简单的实现日志的输出,将日志写入文件的过程记录如下: 1.新建LogUtil.Java( 里面写了几个静态方法,为log设置等级.添加log控制 ...
- Dev Express Report 学习总结(四)Dev Express 动态生成XRTable使用总结
1. XRTableCell常见属性 XRTableCell xrTableCell = new XRTableCell(); A. 字体及字体大小 xrTableCell.Font = new S ...
- 几种IO情况的学习和总结 关于 =====阻塞/非阻塞以及同步/异步区别
同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的.所以先限定一下本文的上下文. 背景是Linux环境下的network IO. 在进行解释 ...
- PlayMaker Int的两个数进行比较 Int Compare
Integer 1 和 Integer 2 进行比较,Integer 1 和 Integer 2 相等的时候 执行 ChangeToGreen; Integer 1 比 Integer 2 大的时 ...
- Neutron命令测试4
jolin@jolin:~$ route -nKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Iface ...