Python 随机生成中文验证码的实例代码


Posted in Python onMarch 20, 2013

python代码

 # -*- coding: utf-8 -*- 
 import Image,ImageDraw,ImageFont 
 import random 
 import math, string   
 class RandomChar(): 
   """用于随机生成汉字""" 
   @staticmethod 
   def Unicode(): 
     val = random.randint(0x4E00, 0x9FBF) 
     return unichr(val)   
   @staticmethod 
   def GB2312(): 
     head = random.randint(0xB0, 0xCF) 
     body = random.randint(0xA, 0xF) 
     tail = random.randint(0, 0xF) 
     val = ( head << 8 ) | (body << 4) | tail 
     str = "%x" % val 
     return str.decode('hex').decode('gb2312')   
   
 class ImageChar(): 
   def __init__(self, fontColor = (0, 0, 0), 
                      size = (100, 40), 
                      fontPath = 'wqy.ttc', 
                      bgColor = (255, 255, 255), 
                      fontSize = 20): 
     self.size = size 
     self.fontPath = fontPath 
     self.bgColor = bgColor 
     self.fontSize = fontSize 
     self.fontColor = fontColor 
     self.font = ImageFont.truetype(self.fontPath, self.fontSize) 
     self.image = Image.new('RGB', size, bgColor)   
   def rotate(self): 
     self.image.rotate(random.randint(0, 30), expand=0)   
   def drawText(self, pos, txt, fill): 
     draw = ImageDraw.Draw(self.image) 
     draw.text(pos, txt, font=self.font, fill=fill) 
     del draw   
   def randRGB(self): 
     return (random.randint(0, 255), 
            random.randint(0, 255), 
            random.randint(0, 255))   
   def randPoint(self): 
     (width, height) = self.size 
     return (random.randint(0, width), random.randint(0, height))   
   def randLine(self, num): 
     draw = ImageDraw.Draw(self.image) 
     for i in range(0, num): 
       draw.line([self.randPoint(), self.randPoint()], self.randRGB()) 
     del draw   

   def randChinese(self, num): 
     gap = 5 
     start = 0 
     for i in range(0, num): 
       char = RandomChar().GB2312() 
       x = start + self.fontSize * i + random.randint(0, gap) + gap * i 
       self.drawText((x, random.randint(-5, 5)), RandomChar().GB2312(), self.randRGB()) 
       self.rotate() 
     self.randLine(18)   
   def save(self, path): 
     self.image.save(path)

调用方法

 ic = ImageChar(fontColor=(100,211, 90)) 
 ic.randChinese(4) 
 ic.save("1.jpeg")
Python 相关文章推荐
跟老齐学Python之赋值,简单也不简单
Sep 24 Python
python实现矩阵乘法的方法
Jun 28 Python
python实现百万答题自动百度搜索答案
Jan 16 Python
python 读取.csv文件数据到数组(矩阵)的实例讲解
Jun 14 Python
python pandas 对时间序列文件处理的实例
Jun 22 Python
Python3删除排序数组中重复项的方法分析
Jan 31 Python
Python去除字符串前后空格的几种方法
Mar 04 Python
Python匿名函数及应用示例
Apr 09 Python
python爬虫中抓取指数的实例讲解
Dec 01 Python
关于django python manage.py startapp 应用名出错异常原因解析
Dec 15 Python
使用pandas读取表格数据并进行单行数据拼接的详细教程
Mar 03 Python
Python 如何利用ffmpeg 处理视频素材
Nov 27 Python
python 字符串格式化代码
Mar 17 #Python
Python中条件选择和循环语句使用方法介绍
Mar 13 #Python
python list 合并连接字符串的方法
Mar 09 #Python
python的正则表达式re模块的常用方法
Mar 09 #Python
Python语言编写电脑时间自动同步小工具
Mar 08 #Python
py2exe 编译ico图标的代码
Mar 08 #Python
python中wx将图标显示在右下角的脚本代码
Mar 08 #Python
You might like
PHP网页游戏学习之Xnova(ogame)源码解读(八)
2014/06/23 PHP
Smarty模板变量调节器用法分析
2016/05/23 PHP
Yii控制器中filter过滤器用法分析
2016/07/15 PHP
用Javascript 获取页面元素的位置的代码
2009/09/25 Javascript
jquery做的一个简单的屏幕锁定提示框
2014/03/26 Javascript
详解参数传递四种形式
2015/07/21 Javascript
jQuery实现hover合成事件的方法
2015/08/06 Javascript
JS实现双击屏幕滚动效果代码
2015/10/28 Javascript
程序员必知35个jQuery 代码片段
2015/11/05 Javascript
jQuery实现ajax调用WCF服务的方法(附带demo下载)
2015/12/04 Javascript
easyui datagrid 大数据加载效率慢,优化解决方法(推荐)
2016/11/09 Javascript
使用JS代码实现点击按钮下载文件
2016/11/12 Javascript
vue-scroller记录滚动位置的示例代码
2018/01/17 Javascript
express如何使用session与cookie的方法
2018/01/30 Javascript
JS实现图片转换成base64的各种应用场景实例分析
2018/06/22 Javascript
vue-router 手势滑动触发返回功能
2018/09/30 Javascript
详解jQuery中的prop()使用方法
2020/01/05 jQuery
Openlayers绘制聚合标注
2020/09/28 Javascript
Python 通过URL打开图片实例详解
2017/06/01 Python
Python对象中__del__方法起作用的条件详解
2018/11/01 Python
python list等分并从等分的子集中随机选取一个数
2020/11/16 Python
茵宝(Umbro)英国官方商店:英国足球服装生产商
2016/12/29 全球购物
好莱坞百老汇御用王牌美妆:Koh Gen Do 江原道
2018/04/03 全球购物
俄罗斯在线大型超市:ТутПросто
2021/01/08 全球购物
你经历的项目中的SCM配置项主要有哪些?什么是配置项?
2013/11/04 面试题
小学生新学期寄语
2014/01/19 职场文书
乡镇庆八一活动方案
2014/02/02 职场文书
房屋出租协议书范本(标准版)
2014/09/24 职场文书
2014教师评职称工作总结
2014/11/10 职场文书
大学生国家助学金感谢信
2015/01/23 职场文书
通用员工手册范本
2015/05/14 职场文书
母婴行业实体、电商模式全面解析
2019/08/01 职场文书
使用Selenium实现微博爬虫(预登录、展开全文、翻页)
2021/04/13 Python
Python OpenCV 图像平移的实现示例
2021/06/04 Python
JavaScript实现外溢动态爱心的效果的示例代码
2022/03/21 Javascript
vue css 相对路径导入问题级踩坑记录
2022/06/05 Vue.js