python生成随机验证码(中文验证码)示例


Posted in Python onApril 03, 2014
# -*- 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)
Python 相关文章推荐
python web框架学习笔记
May 03 Python
python多线程方式执行多个bat代码
Jun 07 Python
Python 搭建Web站点之Web服务器网关接口
Nov 06 Python
Python+Socket实现基于TCP协议的客户与服务端中文自动回复聊天功能示例
Aug 31 Python
Python基于回溯法子集树模板实现图的遍历功能示例
Sep 05 Python
python装饰器实例大详解
Oct 25 Python
python实现分页效果
Oct 25 Python
Python cookbook(数据结构与算法)将序列分解为单独变量的方法
Feb 13 Python
完美解决安装完tensorflow后pip无法使用的问题
Jun 11 Python
Python数据预处理之数据规范化(归一化)示例
Jan 08 Python
Python学习笔记之Django创建第一个数据库模型的方法
Aug 07 Python
利用PyQt中的QThread类实现多线程
Feb 18 Python
python读取html中指定元素生成excle文件示例
Apr 03 #Python
python实现zencart产品数据导入到magento(python导入数据)
Apr 03 #Python
python模拟登陆阿里妈妈生成商品推广链接
Apr 03 #Python
python多线程抓取天涯帖子内容示例
Apr 03 #Python
python局域网ip扫描示例分享
Apr 03 #Python
python实现数通设备tftp备份配置文件示例
Apr 02 #Python
python实现巡检系统(solaris)示例
Apr 02 #Python
You might like
php中使用cookie来保存用户登录信息的实现代码
2012/03/08 PHP
php预定义变量使用帮助(带实例)
2013/10/30 PHP
浅谈使用PHP开发微信支付的流程
2015/10/04 PHP
php在linux环境中如何使用redis详解
2020/12/15 PHP
一个javascript参数的小问题
2008/03/02 Javascript
JS 字符串连接[性能比较]
2009/05/10 Javascript
JavaScript 输入框内容格式验证代码
2010/02/11 Javascript
修复IE9&amp;safari 的sort方法
2011/10/21 Javascript
jQuery 瀑布流 浮动布局(一)(延迟AJAX加载图片)
2012/05/23 Javascript
JavaScript拆分字符串时产生空字符的解决方案
2014/09/26 Javascript
百度地图API之本地搜索与范围搜索
2015/07/30 Javascript
jQuery+CSS3实现3D立方体旋转效果
2015/11/10 Javascript
jQuery检测滚动条是否到达底部
2015/12/15 Javascript
javascript函数自动执行常用方法汇总
2016/03/28 Javascript
详解JavaScript的另类写法
2016/04/11 Javascript
第九章之路径分页标签与徽章组件
2016/04/25 Javascript
浅谈JavaScript的计时器对象
2016/12/26 Javascript
React创建组件的三种方式及其区别
2017/01/12 Javascript
微信小程序通过api接口将json数据展现到小程序示例
2017/01/20 Javascript
Vue.directive自定义指令的使用详解
2017/03/10 Javascript
vue实现app页面切换动画效果实例
2017/05/23 Javascript
微信小程序中setInterval的使用方法
2017/09/29 Javascript
微信小程序基于movable-view实现滑动删除效果
2020/01/08 Javascript
JavaScript中ES6规范中let和const的用法和区别
2020/08/06 Javascript
Python subprocess模块学习总结
2014/03/13 Python
python通过文件头判断文件类型
2015/10/30 Python
使用OpenCV获取图像某点的颜色值,并设置某点的颜色
2020/06/02 Python
CSS3的calc()做响应模式布局的实现方法
2017/09/06 HTML / CSS
CSMA/CD介质访问控制协议
2015/11/17 面试题
介绍一下Make? 为什么使用make
2013/12/08 面试题
捷科时代的软件测试笔试题
2015/11/09 面试题
大学四年职业生涯规划书范文
2014/01/02 职场文书
纪念九一八事变83周年国旗下讲话稿
2014/09/15 职场文书
2014年乡镇领导个人整改措施
2014/09/19 职场文书
党的群众路线教育实践活动学习笔记
2014/11/05 职场文书
培训学校2015年度工作总结
2015/07/20 职场文书