用Python生成随机的中文验证码图片,,在登录很多网站的时候,他


在登录很多网站的时候,他们已经不在使用简单的英文和数字的验证码,为了防止恶心注册和群发软件的侵袭,现在都开始使用中文的验证码了。

今天我们就跟大家分享一段用Python生成随机的中文验证码图片源代码

# -*- coding: utf-8 -*-import Image,ImageDraw,ImageFontimport randomimport 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 csv 中文

编橙之家文章,

评论关闭