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读取注册表中值的方法
Apr 08 Python
paramiko模块安装和使用(远程登录服务器)
Jan 27 Python
Flask框架学习笔记(一)安装篇(windows安装与centos安装)
Jun 25 Python
构建Python包的五个简单准则简介
Jun 15 Python
如何使用七牛Python SDK写一个同步脚本及使用教程
Aug 23 Python
python学习笔记之调用eval函数出现invalid syntax错误问题
Oct 18 Python
python2.7的编码问题与解决方法
Oct 04 Python
Python+OpenCV让电脑帮你玩微信跳一跳
Jan 04 Python
python os.listdir按文件存取时间顺序列出目录的实例
Oct 21 Python
python Popen 获取输出,等待运行完成示例
Dec 30 Python
解决Jupyter notebook中.py与.ipynb文件的import问题
Apr 21 Python
基于Python把网站域名解析成ip地址
May 25 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图片处理类(水印、透明度、旋转)
2015/10/21 PHP
Symfony核心类概述
2016/03/17 PHP
PHP中PDO事务处理操作示例
2018/05/02 PHP
Yii 访问 Gii(脚手架)时出现 403 错误
2018/06/06 PHP
php+laravel依赖注入知识点总结
2019/11/04 PHP
JS常见问题整理(持续更新)
2013/08/06 Javascript
js设置控件的隐藏与显示的两种方法
2014/08/21 Javascript
JS实现的页面自定义滚动条效果
2015/10/26 Javascript
原生js实现百叶窗效果及原理介绍
2016/04/12 Javascript
原生JS和jQuery版实现文件上传功能
2016/04/18 Javascript
VUEJS实战之修复错误并且美化时间(2)
2016/06/13 Javascript
JSON对象 详解及实例代码
2016/10/18 Javascript
jQuery实现的模拟弹出窗口功能示例
2016/11/24 Javascript
BootStrapTable 单选及取值的实现方法
2017/01/10 Javascript
javascript使用正则实现去掉字符串前面的所有0
2018/07/23 Javascript
JS前端知识点offset,scroll,client,冒泡,事件对象的应用整理总结
2019/06/27 Javascript
简单使用webpack打包文件的实现
2019/10/29 Javascript
urllib2自定义opener详解
2014/02/07 Python
python调用摄像头显示图像的实例
2018/08/03 Python
对python实时得到鼠标位置的示例讲解
2018/10/14 Python
python 利用for循环 保存多个图像或者文件的实例
2018/11/09 Python
浅谈Python在pycharm中的调试(debug)
2018/11/29 Python
python语言基本语句用法总结
2019/06/11 Python
Python 计算任意两向量之间的夹角方法
2019/07/05 Python
解决Mac下使用python的坑
2019/08/13 Python
pandas factorize实现将字符串特征转化为数字特征
2019/12/19 Python
python使用梯度下降和牛顿法寻找Rosenbrock函数最小值实例
2020/04/02 Python
python爬虫---requests库的用法详解
2020/09/28 Python
Python+OpenCV图像处理——图像二值化的实现
2020/10/24 Python
CSS3 实现的加载动画
2020/12/07 HTML / CSS
向全球直邮输送天然健康产品:iHerb.com
2020/05/03 全球购物
安全生产责任书范本
2014/04/15 职场文书
国旗下讲话演讲稿
2014/05/08 职场文书
2014酒店客房部工作总结
2014/12/16 职场文书
一波干货,会议主持词开场白范文
2019/05/06 职场文书
MySQL和Oracle批量插入SQL的通用写法示例
2021/11/17 MySQL