python生成随机图形验证码详解


Posted in Python onNovember 08, 2017

使用python生成随机图片验证码,需要使用pillow模块

1.安装pillow模块

pip install pillow

2.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生成随机图形验证码详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:Python爬虫实例爬取网站搞笑段子、Python入门之三角函数全解【收藏】、Python基础练习之用户登录实现代码分享等,有什么可以随时留言,小编会及时回复大家的。感谢朋友们对本站的支持!

Python 相关文章推荐
Python对象的深拷贝和浅拷贝详解
Aug 25 Python
Python基础之函数用法实例详解
Sep 10 Python
python中lambda与def用法对比实例分析
Apr 30 Python
python实现随机梯度下降(SGD)
Mar 24 Python
Python输入二维数组方法
Apr 13 Python
Python subprocess模块常见用法分析
Jun 12 Python
python如何判断IP地址合法性
Apr 05 Python
详解python datetime模块
Aug 17 Python
python如何控制进程或者线程的个数
Oct 16 Python
Python Tkinter实例——模拟掷骰子
Oct 24 Python
Python绘制K线图之可视化神器pyecharts的使用
Mar 02 Python
Python爬取英雄联盟MSI直播间弹幕并生成词云图
Jun 01 Python
Python爬虫实例爬取网站搞笑段子
Nov 08 #Python
python执行使用shell命令方法分享
Nov 08 #Python
python通过socket实现多个连接并实现ssh功能详解
Nov 08 #Python
Python基础练习之用户登录实现代码分享
Nov 08 #Python
python实现简单中文词频统计示例
Nov 08 #Python
python中如何正确使用正则表达式的详细模式(Verbose mode expression)
Nov 08 #Python
python如何使用正则表达式的前向、后向搜索及前向搜索否定模式详解
Nov 08 #Python
You might like
php 小乘法表实现代码
2009/07/16 PHP
PHP超级全局变量数组小结
2012/10/04 PHP
PHP答题类应用接口实例
2015/02/09 PHP
php使用Session和文件统计在线人数
2015/07/04 PHP
php使用正则表达式去掉html中的注释方法
2016/11/03 PHP
JavaScript 保存数组到Cookie的代码
2010/04/14 Javascript
jquery 单击li防止重复加载的实现代码
2010/12/24 Javascript
jQuery实现tab选项卡效果的方法
2015/07/08 Javascript
Vue中使用vee-validate表单验证的方法
2018/05/09 Javascript
解决Vue中mounted钩子函数获取节点高度出错问题
2018/05/18 Javascript
Vue js 的生命周期(看了就懂)(推荐)
2019/03/29 Javascript
node实现socket链接与GPRS进行通信的方法
2019/05/20 Javascript
基于jQuery实现挂号平台首页源码
2020/01/06 jQuery
[05:02][DOTA2]DOTA进化论 第一期
2013/09/27 DOTA
从零学Python之引用和类属性的初步理解
2014/05/15 Python
Flask 让jsonify返回的json串支持中文显示的方法
2018/03/26 Python
python变量命名的7条建议
2019/07/04 Python
python mysql断开重连的实现方法
2019/07/26 Python
python 利用已有Ner模型进行数据清洗合并代码
2019/12/24 Python
python使用建议技巧分享(三)
2020/08/18 Python
CSS3实现的闪烁跳跃进度条示例(附源码)
2013/08/19 HTML / CSS
美国第一香水网站:Perfume.com
2017/01/23 全球购物
中邮全球便购:中国邮政速递物流
2017/03/04 全球购物
北卡罗来纳州豪华家具和家居装饰店:Carolina Rustica
2018/10/30 全球购物
The Hut美国/加拿大:英国领先的豪华在线百货商店
2019/03/26 全球购物
Fnac西班牙官网:法国文化和电子产品零售商
2021/03/14 全球购物
大学生就业推荐信范文
2013/11/29 职场文书
八年级音乐教学反思
2014/01/09 职场文书
给老婆道歉的话
2015/01/20 职场文书
2015年超市员工工作总结
2015/05/04 职场文书
工作汇报材料难写?方法都在这里了!
2019/07/01 职场文书
jquery插件实现图片悬浮
2021/04/16 jQuery
python 利用PyAutoGUI快速构建自动化操作脚本
2021/05/31 Python
如何在Python项目中引入日志
2021/05/31 Python
python神经网络 使用Keras构建RNN训练
2022/05/04 Python
前端与RabbitMQ实时消息推送未读消息小红点实现示例
2022/07/23 Java/Android