python使用pil生成图片验证码的方法


Posted in Python onMay 08, 2015

本文实例讲述了python使用pil生成图片验证码的方法。分享给大家供大家参考。具体实现方法如下:

# -*- coding: utf-8 -*-
#导入三个模块
import Image,ImageDraw,ImageFont
import random
import math
'''基本功能'''
#图片宽度
width = 100
#图片高度
height = 40
#背景颜色
bgcolor = (255,255,255)
#生成背景图片
image = Image.new('RGB',(width,height),bgcolor)
#加载字体
font = ImageFont.truetype('FreeSans.ttf',30)
#字体颜色
fontcolor = (0,0,0)
#产生draw对象,draw是一些算法的集合
draw = ImageDraw.Draw(image)
#画字体,(0,0)是起始位置
draw.text((0,0),'1234',font=font,fill=fontcolor)
#释放draw
del draw
#保存原始版本
image.save('1234_1.jpeg')
'''演示扭曲,需要新建一个图片对象'''
#新图片
newImage = Image.new('RGB',(width,height),bgcolor)
#load像素
newPix = newImage.load()
pix = image.load()
offset = 0
for y in range(0,height):
  offset += 1
  for x in range(0,width):
    #新的x坐标点
    newx = x + offset
    #你可以试试如下的效果
    #newx = x + math.sin(float(y)/10)*10
    if newx < width:            
      #把源像素通过偏移到新的像素点
      newPix[newx,y] = pix[x,y]
#保存扭曲后的版本      
newImage.save('1234_2.jpeg')
'''形变一下'''
#x1 = ax+by+c
#y1 = dx+ey+f
newImage = image.transform((width+30,height+10), Image.AFFINE, (1,-0.3,0,-0.1,1,0))
newImage.save('1234_3.jpeg')
'''画干扰线,别画太多,免得用户都看不清楚'''    
#创建draw,画线用
draw = ImageDraw.Draw(newImage)
#线的颜色
linecolor= (0,0,0)
for i in range(0,15):
  #都是随机的
  x1 = random.randint(0,width)
  x2 = random.randint(0,width)
  y1 = random.randint(0,height)
  y2 = random.randint(0,height)
  draw.line([(x1, y1), (x2, y2)], linecolor)      
#保存到本地
newImage.save('1234_4.jpeg')

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
python通过exifread模块获得图片exif信息的方法
Mar 16 Python
Python使用time模块实现指定时间触发器示例
May 18 Python
python 上下文管理器使用方法小结
Oct 10 Python
python利用smtplib实现QQ邮箱发送邮件
May 20 Python
Mac在python3环境下安装virtualwrapper遇到的问题及解决方法
Jul 09 Python
python Gunicorn服务器使用方法详解
Jul 22 Python
Python SSL证书验证问题解决方案
Jan 13 Python
计算pytorch标准化(Normalize)所需要数据集的均值和方差实例
Jan 15 Python
django queryset 去重 .distinct()说明
May 19 Python
python3.6使用SMTP协议发送邮件
May 20 Python
Python使用grequests并发发送请求的示例
Nov 05 Python
Python 数据可视化工具 Pyecharts 安装及应用
Apr 20 Python
python实现连接mongodb的方法
May 08 #Python
python写入xml文件的方法
May 08 #Python
python从sqlite读取并显示数据的方法
May 08 #Python
python创建一个最简单http webserver服务器的方法
May 08 #Python
python分析网页上所有超链接的方法
May 08 #Python
python使用htmllib分析网页内容的方法
May 08 #Python
python使用nntp读取新闻组内容的方法
May 08 #Python
You might like
2019年漫画销量排行榜:鬼灭登顶 海贼单卷制霸 尾田盛赞鬼灭
2020/03/08 日漫
php htmlspecialchars加强版
2010/02/16 PHP
JS控制表格隔行变色
2006/06/26 Javascript
jQuery解决iframe高度自适应代码
2009/12/20 Javascript
利用腾讯的ip地址库做ip物理地址定位
2010/07/24 Javascript
javascript对talbe进行动态添加、删除、验证实现代码
2012/03/29 Javascript
jQuery 全选/反选以及单击行改变背景色实例
2013/07/02 Javascript
JS动态添加与删除select中的Option对象(示例代码)
2013/12/25 Javascript
利用函数的惰性载入提高javascript代码执行效率
2014/05/05 Javascript
Jquery实现跨域异步上传文件总结
2017/02/03 Javascript
利用n 升级工具升级Node.js版本及在mac环境下的坑
2017/02/15 Javascript
jquery中done和then的区别(详解)
2017/12/19 jQuery
JS模拟实现哈希表及应用详解
2018/05/04 Javascript
AngularJS中ng-options实现下拉列表的数据绑定方法
2018/08/13 Javascript
js canvas实现红包照片效果
2018/08/21 Javascript
python实现bitmap数据结构详解
2014/02/17 Python
详解Python编程中基本的数学计算使用
2016/02/04 Python
python实现简易内存监控
2018/06/21 Python
django表单的Widgets使用详解
2019/07/22 Python
Django Rest framework三种分页方式详解
2019/07/26 Python
浅谈Python2之汉字编码为unicode的问题(即类似\xc3\xa4)
2019/08/12 Python
Python for循环通过序列索引迭代过程解析
2020/02/07 Python
Tensorflow 模型转换 .pb convert to .lite实例
2020/02/12 Python
利用pandas向一个csv文件追加写入数据的实现示例
2020/04/23 Python
使用css3实现的tab选项卡代码分享
2014/12/09 HTML / CSS
基于CSS3实现的漂亮Menu菜单效果代码
2015/09/10 HTML / CSS
美国女鞋品牌:naturalizer(娜然)
2016/08/01 全球购物
学校文明单位申报材料
2014/05/06 职场文书
环保倡议书范文
2014/05/12 职场文书
党员个人剖析材料(四风问题)
2014/10/07 职场文书
2014年大学生村官工作总结
2014/11/19 职场文书
2014司机年终工作总结
2014/12/05 职场文书
幼儿园教师工作总结2015
2015/04/02 职场文书
2015驻村干部工作总结
2015/04/07 职场文书
学雷锋感言
2015/08/03 职场文书
2016寒假假期总结
2015/10/10 职场文书