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获取CPU、内存和硬盘等windowns系统信息的2个例子
Apr 15 Python
Python实现Pig Latin小游戏实例代码
Feb 02 Python
Python自定义线程池实现方法分析
Feb 07 Python
tensorflow建立一个简单的神经网络的方法
Feb 10 Python
使用实现pandas读取csv文件指定的前几行
Apr 20 Python
python得到windows自启动列表的方法
Oct 14 Python
python2.7实现邮件发送功能
Dec 12 Python
python 通过麦克风录音 生成wav文件的方法
Jan 09 Python
Python API 自动化实战详解(纯代码)
Jun 11 Python
python安装pil库方法及代码
Jun 25 Python
Python 解析pymysql模块操作数据库的方法
Feb 18 Python
python实现canny边缘检测
Sep 14 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 图片上传代码
2011/09/13 PHP
今天你说520了吗?不仅有php表白书还有java表白神器
2016/05/20 PHP
javascript取消文本选定的实现代码
2010/11/14 Javascript
国外大牛IE版本检测!现在IE都到9了,IE检测代码
2012/01/04 Javascript
web性能优化之javascript性能调优
2012/12/28 Javascript
JS(JQuery)操作Array的相关方法介绍
2014/02/11 Javascript
jquery form 加载数据示例
2014/04/21 Javascript
JQuery实现样式设置、追加、移除与切换的方法
2015/06/11 Javascript
jQuery实现固定在网页顶部的菜单效果代码
2015/09/02 Javascript
nodejs简单实现操作arduino
2016/09/25 NodeJs
JavaScript计算值然后把值嵌入到html中的实现方法
2016/10/29 Javascript
ionic选择多张图片上传的示例代码
2017/10/10 Javascript
微信小程序基于slider组件动态修改标签透明度的方法示例
2017/12/04 Javascript
jQuery实现的简单对话框拖动功能示例
2018/06/05 jQuery
教你如何用node连接redis的示例代码
2018/07/12 Javascript
Angular4.0动画操作实例详解
2019/05/10 Javascript
VUE写一个简单的表格实例
2019/08/06 Javascript
jquery选择器和属性对象的操作实例分析
2020/01/10 jQuery
Python数据操作方法封装类实例
2017/06/23 Python
Python学习之Anaconda的使用与配置方法
2018/01/04 Python
Python OpenCV实现图片上输出中文
2018/01/22 Python
Linux下python制作名片示例
2018/07/20 Python
在matplotlib的图中设置中文标签的方法
2018/12/13 Python
基于Pycharm加载多个项目过程图解
2020/01/19 Python
pycharm无法安装第三方库的问题及解决方法以scrapy为例(图解)
2020/05/09 Python
C/C++程序员常见面试题二
2015/11/19 面试题
标准毕业生自荐信范文
2013/11/04 职场文书
季度思想汇报
2014/01/01 职场文书
药品促销活动方案
2014/02/14 职场文书
幼儿园招生广告
2014/03/19 职场文书
升旗仪式演讲稿
2014/05/08 职场文书
2015年全国科普日活动总结
2015/03/23 职场文书
2015年环卫工作总结
2015/04/28 职场文书
简单谈谈Python面向对象的相关知识
2021/06/28 Python
微信小程序scroll-view不能左右滑动问题的解决方法
2021/07/09 Javascript
Java面试题冲刺第十九天--数据库(4)
2021/08/07 Java/Android