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 相关文章推荐
利用django如何解析用户上传的excel文件
Jul 24 Python
学习Python selenium自动化网页抓取器
Jan 20 Python
对python字典元素的添加与修改方法详解
Jul 06 Python
将Python字符串生成PDF的实例代码详解
May 17 Python
python自动发邮件总结及实例说明【推荐】
May 31 Python
Django处理Ajax发送的Get请求代码详解
Jul 29 Python
flask框架自定义过滤器示例【markdown文件读取和展示功能】
Nov 08 Python
基于Python实现ComicReaper漫画自动爬取脚本过程解析
Nov 11 Python
python kafka 多线程消费者&amp;手动提交实例
Dec 21 Python
基于python3.7利用Motor来异步读写Mongodb提高效率(推荐)
Apr 29 Python
Python爬虫之Selenium下拉框处理的实现
Dec 04 Python
pytorch显存一直变大的解决方案
Apr 08 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
PHP&amp;MYSQL服务器配置说明
2006/10/09 PHP
深入php内核之php in array
2015/11/10 PHP
如何使用jQUery获取选中radio对应的值(一句代码)
2013/06/03 Javascript
jquery cookie的用法总结
2013/11/18 Javascript
详解javascript函数的参数
2015/11/10 Javascript
基于zepto.js简单实现上传图片
2016/06/21 Javascript
js控制文本框禁止输入特殊字符详解
2017/04/07 Javascript
JavaScript转换数据库DateTime字段类型方法
2017/06/27 Javascript
vue2.x select2 指令封装详解
2017/10/12 Javascript
解决js相同的正则多次调用test()返回的值却不同的问题
2018/10/10 Javascript
微信小程序网络层封装的实现(promise, 登录锁)
2019/05/08 Javascript
Angular4.0动画操作实例详解
2019/05/10 Javascript
Vue 自定义标签的src属性不能使用相对路径的解决
2019/09/17 Javascript
js实现漂亮的星空背景
2019/11/01 Javascript
微信小程序swiper左右扩展各显示一半代码实例
2019/12/05 Javascript
原生js实现日期选择插件
2020/05/21 Javascript
vue项目实现设置根据路由高亮对应的菜单项操作
2020/08/06 Javascript
深入理解Python中的*重复运算符
2017/10/28 Python
python绘制热力图heatmap
2020/03/23 Python
Django框架使用mysql视图操作示例
2019/05/15 Python
python连接、操作mongodb数据库的方法实例详解
2019/09/11 Python
python UIAutomator2使用超详细教程
2021/02/19 Python
css3气泡 css3关键帧动画创建的动态通知气泡
2013/02/26 HTML / CSS
HTML5 本地存储实现购物车功能
2017/09/07 HTML / CSS
瑞典Happy Socks美国官网:购买色彩斑斓的快乐袜子
2016/10/19 全球购物
Maxpeedingrods美国:高性能汽车零件
2020/02/14 全球购物
初二政治教学反思
2014/01/12 职场文书
2014社区三八妇女节活动方案
2014/03/30 职场文书
《充气雨衣》教学反思
2014/04/07 职场文书
羽毛球比赛策划方案
2014/06/13 职场文书
2014年妇产科工作总结
2014/12/08 职场文书
民事申诉状范本
2015/05/20 职场文书
食品卫生管理制度
2015/08/06 职场文书
确保减税降费落地生根,用实实在在措施
2019/07/19 职场文书
能用CSS实现的就不要麻烦JavaScript了
2021/10/05 HTML / CSS
Java并发编程之原子性-Atomic的使用
2022/03/16 Java/Android