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

 更新时间:2013年03月20日 09:59:52   作者:  
Python 随机生成中文验证码的实例代码,需要的朋友可以参考一下

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中字符串相关操作的运算符总结

    这篇文章主要介绍了Python之字符串相关操作的运算符,本文通过案例给大家详细讲解python字符串运算符的说明,需要的朋友可以参考下
    2023-12-12
  • Python3.7实现验证码登录方式代码实例

    Python3.7实现验证码登录方式代码实例

    这篇文章主要介绍了Python3.7实现验证码登录方式代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • Python shapely库的具体使用

    Python shapely库的具体使用

    本文主要介绍了Python shapely库的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • Dephi逆向工具Dede导出函数名MAP导入到IDA中的实现方法

    Dephi逆向工具Dede导出函数名MAP导入到IDA中的实现方法

    这篇文章主要介绍了Dephi逆向工具Dede导出函数名MAP导入到IDA中,通过这个脚本,我们就可以把专业dephi程序分析的结果,转移到IDA专业逆向代码分析的平台,实现联动,需要的朋友可以参考下
    2022-08-08
  • python+adb命令实现自动刷视频脚本案例

    python+adb命令实现自动刷视频脚本案例

    这篇文章主要介绍了python+adb命令实现自动刷视频脚本案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Python单例模式实例分析

    Python单例模式实例分析

    这篇文章主要介绍了Python单例模式,以实例形式分析了Python单例模式的具体使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-01-01
  • Python进程间通信之共享内存详解

    Python进程间通信之共享内存详解

    这篇文章主要为大家详细介绍了Python进程间通信之共享内存的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • Python类反射机制使用实例解析

    Python类反射机制使用实例解析

    这篇文章主要介绍了Python类反射机制使用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Python使用django获取用户IP地址的方法

    Python使用django获取用户IP地址的方法

    这篇文章主要介绍了Python使用django获取用户IP地址的方法,实例分析了django获取用户IP地址过程中出现的问题与对应的解决方法,非常简单实用,需要的朋友可以参考下
    2015-05-05
  • 最新版 Windows10上安装Python 3.8.5的步骤详解

    最新版 Windows10上安装Python 3.8.5的步骤详解

    这篇文章主要介绍了最新版 Windows10上安装Python 3.8.5的步骤详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11

最新评论