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 相关文章推荐
打开电脑上的QQ的python代码
Feb 10 Python
Python发送email的3种方法
Apr 28 Python
win10系统中安装scrapy-1.1
Jul 03 Python
python实现机器学习之元线性回归
Sep 06 Python
python实现朴素贝叶斯算法
Nov 19 Python
对Python w和w+权限的区别详解
Jan 23 Python
Python实现求两个数组交集的方法示例
Feb 23 Python
pyqt5 删除layout中的所有widget方法
Jun 25 Python
Python中的self用法详解
Aug 06 Python
DJANGO-URL反向解析REVERSE实例讲解
Oct 25 Python
pytorch点乘与叉乘示例讲解
Dec 27 Python
如何通过Python实现RabbitMQ延迟队列
Nov 28 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
header跳转和include包含问题详解
2012/09/08 PHP
PHP 循环删除无限分类子节点的实现代码
2013/06/21 PHP
PHP编程中尝试程序并发的几种方式总结
2016/03/21 PHP
php+redis实现注册、删除、编辑、分页、登录、关注等功能示例
2017/02/15 PHP
PHP 实现公历日期与农历日期的互转换
2017/09/13 PHP
一段非常简单的让图片自动切换js代码
2006/11/10 Javascript
初探jquery——表单应用范例
2007/02/20 Javascript
JS启动应用程序的一个简单例子
2008/05/11 Javascript
js模仿hover的具体实现代码
2013/12/30 Javascript
JS判断图片是否加载完成方法汇总(最新版)
2016/05/13 Javascript
jQuery实现点击行选中或取消CheckBox的方法
2016/08/01 Javascript
jquery实现下拉框左右选择功能
2017/02/21 Javascript
微信小程序中做用户登录与登录态维护的实现详解
2017/05/17 Javascript
详解vue-cli快速构建vue应用并实现webpack打包
2017/12/13 Javascript
vue监听对象及对象属性问题
2018/08/20 Javascript
vue主动刷新页面及列表数据删除后的刷新实例
2018/09/16 Javascript
ES6 Promise对象的含义和基本用法分析
2019/06/14 Javascript
Vue.js递归组件实现组织架构树和选人功能
2019/07/04 Javascript
js canvas实现5张图片合成一张图片
2019/07/15 Javascript
解决element-ui的下拉框有值却无法选中的情况
2020/11/07 Javascript
ReactRouter的实现方法
2021/01/25 Javascript
python中os操作文件及文件路径实例汇总
2015/01/15 Python
python实现机械分词之逆向最大匹配算法代码示例
2017/12/13 Python
一个简单的python爬虫程序 爬取豆瓣热度Top100以内的电影信息
2018/04/17 Python
python获取指定字符串中重复模式最高的字符串方法
2018/06/29 Python
PyQt5笔记之弹出窗口大全
2019/06/20 Python
AmazeUI 点击元素显示全屏的实现
2020/08/25 HTML / CSS
Lands’ End官网:经典的美国生活方式品牌
2016/08/14 全球购物
秋季婚礼证婚词
2014/01/11 职场文书
董事长助理岗位职责
2014/02/18 职场文书
师范教师专业大学生职业生涯规划范文
2014/03/02 职场文书
园艺师求职信
2014/04/27 职场文书
安全资料员岗位职责范本
2014/06/28 职场文书
展览会邀请函
2015/02/02 职场文书
使用CSS实现一个搜索引擎的原理解析
2021/09/25 HTML / CSS
SqlServer常用函数及时间处理小结
2023/05/08 SQL Server