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

Python 随机生成中文验证码的实例代码,第1张

概述python代码复制代码代码如下: #-*-coding:utf-8-*- importImage,ImageDraw,ImageFont importrandom

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),

                      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,Font=self.Font,fill=fill)

     del draw  

   def randRGB(self):

     return (random.randint(0,

            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 随机生成中文验证码的实例代码所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1203311.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-04
下一篇2022-06-04

发表评论

登录后才能评论

评论列表(0条)

    保存