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脚本实现12306火车票查询系统
Sep 30 Python
Python正则替换字符串函数re.sub用法示例
Jan 19 Python
python中实现延时回调普通函数示例代码
Sep 08 Python
Python中进程和线程的区别详解
Oct 29 Python
python使用thrift教程的方法示例
Mar 21 Python
Django框架创建mysql连接与使用示例
Jul 29 Python
Python 元组操作总结
Sep 18 Python
python实现的读取网页并分词功能示例
Oct 29 Python
Flask之pipenv虚拟环境的实现
Nov 26 Python
Python如何获取Win7,Win10系统缩放大小
Jan 10 Python
django中related_name的用法说明
May 20 Python
Django 如何实现文件上传下载
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
smarty的section嵌套循环用法示例
2016/05/28 PHP
PHP程序员简单的开展服务治理架构操作详解(三)
2020/05/14 PHP
js实现的网页颜色代码表全集
2007/07/17 Javascript
Mootools 1.2教程 输入过滤第一部分(数字)
2009/09/15 Javascript
javascript中parentNode,childNodes,children的应用详解
2013/12/17 Javascript
禁用Tab键JS代码兼容Firefox和IE
2014/04/18 Javascript
页面刷新时记住滚动条的位置jquery代码
2014/06/17 Javascript
一个不错的字符串转码解码函数(自写)
2014/07/31 Javascript
Node.js下自定义错误类型详解
2016/10/17 Javascript
JavaScript订单操作小程序完整版
2017/06/23 Javascript
在页面中引入js的两种方法(推荐)
2017/08/29 Javascript
360doc网站不登录就无法复制内容的解决方法
2018/01/27 Javascript
浅谈Vue Element中Select下拉框选取值的问题
2018/03/01 Javascript
NodeJS 将文件夹按照存放路径变成一个对应的JSON的方法
2018/10/17 NodeJs
使用express来代理服务的方法
2019/06/21 Javascript
layui实现鼠标移动到单元格上显示数据的方法
2019/09/11 Javascript
微信小程序分享小程序码的生成(带参数)以及参数的获取
2020/03/25 Javascript
Vue使用鼠标在Canvas上绘制矩形
2020/12/24 Vue.js
[10:21]2018DOTA2国际邀请赛寻真——Winstrike
2018/08/11 DOTA
Django 使用easy_thumbnails压缩上传的图片方法
2019/07/26 Python
python中删除某个元素的方法解析
2019/11/05 Python
TensorFLow 不同大小图片的TFrecords存取实例
2020/01/20 Python
AmazeUI 评论列表的实现示例
2020/08/13 HTML / CSS
英国精品买手店:Browns Fashion
2016/09/29 全球购物
小狗电器官方商城:中国高端吸尘器品牌
2017/03/29 全球购物
美国最受欢迎的度假目的地优惠套餐:BookVIP
2018/09/27 全球购物
英国时尚泳装品牌:Maru Swimwear
2019/10/06 全球购物
资产评估专业学生的自我鉴定
2013/11/14 职场文书
医学类导师推荐信范文
2013/11/19 职场文书
任命书怎么写
2014/06/04 职场文书
学生偷窃检讨书
2014/09/25 职场文书
国际贸易实训报告
2014/11/05 职场文书
python爬虫之利用selenium模块自动登录CSDN
2021/04/22 Python
python实现监听键盘
2021/04/26 Python
MySQL中连接查询和子查询的问题
2021/09/04 MySQL
go goth封装第三方认证库示例详解
2022/08/14 Golang