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实现数通设备端口监控示例
Apr 02 Python
Python内置函数dir详解
Apr 14 Python
python递归查询菜单并转换成json实例
Mar 27 Python
Python模块结构与布局操作方法实例分析
Jul 24 Python
Python基于hashlib模块的文件MD5一致性加密验证示例
Feb 10 Python
Python 文本文件内容批量抽取实例
Dec 10 Python
python 发送和接收ActiveMQ消息的实例
Jan 30 Python
超简单使用Python换脸实例
Mar 27 Python
基于Python的图像数据增强Data Augmentation解析
Aug 13 Python
wxpython绘制音频效果
Nov 18 Python
Python configparser模块封装及构造配置文件
Aug 07 Python
TensorFlow的自动求导原理分析
May 26 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生成txt文件标题及内容的方法
2014/01/16 PHP
原创javascript小游戏实现代码
2010/08/19 Javascript
from 表单提交返回值用post或者是get方法实现
2013/08/21 Javascript
利用jquery操作Radio方法小结
2014/10/20 Javascript
AngularJS中控制器函数的定义与使用方法示例
2017/10/10 Javascript
jQuery简单实现对数组去重及排序操作实例
2017/10/31 jQuery
seajs和requirejs模块化简单案例分析
2019/08/26 Javascript
JS实现图片幻灯片效果代码实例
2020/05/21 Javascript
vue+element使用动态加载路由方式实现三级菜单页面显示的操作
2020/08/04 Javascript
[02:53]DOTA2亚洲邀请赛 NewBee战队巡礼
2015/02/03 DOTA
python实现将元祖转换成数组的方法
2015/05/04 Python
浅谈python爬虫使用Selenium模拟浏览器行为
2018/02/23 Python
Python读取英文文件并记录每个单词出现次数后降序输出示例
2018/06/28 Python
python读取LMDB中图像的方法
2018/07/02 Python
python3.5基于TCP实现文件传输
2020/03/20 Python
python 3.6.2 安装配置方法图文教程
2018/09/18 Python
python爬虫请求头设置代码
2020/07/28 Python
全网最细 Python 格式化输出用法讲解(推荐)
2021/01/18 Python
pandas数据分组groupby()和统计函数agg()的使用
2021/03/04 Python
css3 条纹化和透明化表格Firefox下测试成功
2014/04/15 HTML / CSS
CSS3属性 line-clamp控制文本行数的使用
2020/03/19 HTML / CSS
基于HTML5的WebGL经典3D虚拟机房漫游动画
2017/11/15 HTML / CSS
飞利浦比利时官方网站:Philips比利时
2016/08/24 全球购物
AMAVII眼镜官网:时尚和设计师太阳镜
2019/05/05 全球购物
波兰珠宝品牌:YES
2019/08/09 全球购物
公司晚会主持词
2014/03/22 职场文书
家长对老师的评语
2014/04/18 职场文书
班子四风对照检查材料
2014/08/21 职场文书
创先争优活动承诺书
2014/08/30 职场文书
法人授权委托书样本
2014/09/19 职场文书
2014院党委领导班子对照检查材料思想汇报
2014/09/24 职场文书
婚宴领导致辞
2015/07/28 职场文书
五星级酒店宣传口号
2015/12/25 职场文书
Python用tkinter实现自定义记事本的方法详解
2022/03/31 Python
Flutter Navigator 实现路由传递参数
2022/04/22 Java/Android
MySQL中LAG()函数和LEAD()函数的使用
2022/08/14 MySQL