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 相关文章推荐
天翼开放平台免费短信验证码接口使用实例
Dec 18 Python
Python中input和raw_input的一点区别
Oct 21 Python
简单讲解Python中的闭包
Aug 11 Python
Python学习笔记整理3之输入输出、python eval函数
Dec 14 Python
攻击者是如何将PHP Phar包伪装成图像以绕过文件类型检测的(推荐)
Oct 11 Python
Python3.5模块的定义、导入、优化操作图文详解
Apr 27 Python
python按键按住不放持续响应的实例代码
Jul 17 Python
pytorch 输出中间层特征的实例
Aug 17 Python
python redis 批量设置过期key过程解析
Nov 26 Python
解决pycharm不能自动补全第三方库的函数和属性问题
Mar 12 Python
JAVA SWT事件四种写法实例解析
Jun 05 Python
Python如何使用神经网络进行简单文本分类
Feb 25 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
新52大事件
2020/03/03 欧美动漫
PHP array 的加法操作代码
2010/07/24 PHP
php+jQuery.uploadify实现文件上传教程
2014/12/26 PHP
yii框架使用分页的方法分析
2019/07/25 PHP
建议大家看下JavaScript重要知识更新
2007/07/08 Javascript
javascript 出生日期和身份证判断大全
2008/11/13 Javascript
jQuery 在光标定位的地方插入文字的插件
2012/05/10 Javascript
javascript简单事件处理和with用法介绍
2013/09/16 Javascript
Extjs实现进度条的两种便捷方式
2013/09/26 Javascript
JQuery each()嵌套使用小结
2014/04/18 Javascript
JavaScript中双叹号!!作用示例介绍
2014/09/21 Javascript
Jquery异步提交表单代码分享
2015/03/26 Javascript
jquery插件uploadify多图上传功能实现代码
2016/08/12 Javascript
关于微信上网页图片点击全屏放大效果
2016/12/19 Javascript
Bootstrap CSS使用方法
2016/12/23 Javascript
解决webpack打包速度慢的解决办法汇总
2017/07/06 Javascript
Vue.js仿微信聊天窗口展示组件功能
2017/08/11 Javascript
JS实现闭包中的沙箱模式示例
2017/09/07 Javascript
javascript的惯性运动实现代码实例
2019/09/07 Javascript
vue实现评价星星功能
2020/06/30 Javascript
[57:41]Secret vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
17个Python小技巧分享
2015/01/23 Python
Python2.7基于淘宝接口获取IP地址所在地理位置的方法【测试可用】
2017/06/07 Python
获取python文件扩展名和文件名方法
2018/02/02 Python
Django unittest 设置跳过某些case的方法
2018/12/26 Python
python将excel转换为csv的代码方法总结
2019/07/03 Python
基于Python实现船舶的MMSI的获取(推荐)
2019/10/21 Python
python、Matlab求定积分的实现
2019/11/20 Python
Matplotlib中rcParams使用方法
2021/01/05 Python
css3.0 图形构成实例练习一
2013/03/19 HTML / CSS
绘画专业自荐信范文
2014/02/23 职场文书
体育教育毕业生自荐信
2014/06/29 职场文书
校园广播稿精选
2014/10/01 职场文书
党的群众路线教育实践活动整改方案
2014/10/28 职场文书
2015医德医风个人工作总结
2015/04/02 职场文书
2016年万圣节活动总结
2016/04/05 职场文书