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 thread 并发且顺序运行示例
Apr 09 Python
python中如何使用正则表达式的非贪婪模式示例
Oct 09 Python
使用python进行文本预处理和提取特征的实例
Jun 05 Python
Tensorflow 同时载入多个模型的实例讲解
Jul 27 Python
使用Django开发简单接口实现文章增删改查
May 09 Python
python向字符串中添加元素的实例方法
Jun 28 Python
python tkinter图形界面代码统计工具(更新)
Sep 18 Python
keras分类模型中的输入数据与标签的维度实例
Jul 03 Python
10款最佳Python开发工具推荐,每一款都是神器
Oct 15 Python
Python爬虫自动化爬取b站实时弹幕实例方法
Jan 26 Python
python 使用Tensorflow训练BP神经网络实现鸢尾花分类
May 12 Python
彻底弄懂Python中的回调函数(callback)
Jun 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
PHP 冒泡排序算法的实现代码
2010/08/08 PHP
php购物车实现方法
2015/01/03 PHP
PHP7 新特性详细介绍
2016/09/06 PHP
PHP使用Http Post请求发送Json对象数据代码解析
2020/07/16 PHP
JavaScript的类型转换(字符转数字 数字转字符)
2010/08/30 Javascript
jquery选择器(常用选择器说明)
2010/09/28 Javascript
js有关元素内容操作小结
2011/12/20 Javascript
基于jquery的固定表头和列头的代码
2012/05/03 Javascript
php 中序列化和json使用介绍
2013/07/08 Javascript
js onclick事件传参讲解
2013/11/06 Javascript
jQuery is()函数用法3例
2014/05/06 Javascript
alert和confirm功能介绍
2014/05/21 Javascript
JavaScript中实现继承的三种方式和实例
2015/01/29 Javascript
jQuery使用fadein方法实现渐出效果实例
2015/03/27 Javascript
JS/jQ实现免费获取手机验证码倒计时效果
2016/06/13 Javascript
jQuery使用each方法与for语句遍历数组示例
2016/06/16 Javascript
JavaScript代码里的判断小结
2016/08/22 Javascript
vue-cli开发时,关于ajax跨域的解决方法(推荐)
2018/02/03 Javascript
python+matplotlib实现动态绘制图片实例代码(交互式绘图)
2018/01/20 Python
windows下添加Python环境变量的方法汇总
2018/05/14 Python
Python使用tkinter库实现文本显示用户输入功能示例
2018/05/30 Python
python遍历文件夹,指定遍历深度与忽略目录的方法
2018/07/11 Python
Python函数装饰器实现方法详解
2018/12/22 Python
使用Python Pandas处理亿级数据的方法
2019/06/24 Python
500行代码使用python写个微信小游戏飞机大战游戏
2019/10/16 Python
python正则表达式的懒惰匹配和贪婪匹配说明
2020/07/13 Python
Html5 canvas实现粒子时钟的示例代码
2018/09/06 HTML / CSS
GANT英国官方网上商店:甘特衬衫
2018/02/06 全球购物
怎么写有吸引力的自荐信
2013/11/17 职场文书
小学绿色学校申报材料
2014/08/23 职场文书
五心教育心得体会
2014/09/04 职场文书
贫困证明怎么写
2015/06/16 职场文书
Go Gin实现文件上传下载的示例代码
2021/04/02 Golang
详解Python描述符的工作原理
2021/06/11 Python
总结几个非常实用的Python库
2021/06/26 Python
微信小程序scroll-view不能左右滑动问题的解决方法
2021/07/09 Javascript