用Python公益诉讼模块随机生成中文验证码的示例

  介绍

这篇文章将为大家详细讲解有关用Python公益诉讼模块随机生成中文验证码的示例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

公益诉讼是Python影像库的简称,公益诉讼是一个Python处理图片的库,提供了一系列模块和方法,比如:裁切,平移,旋转,改变尺寸等等。已经是Python平台事实上的图像处理标准库了.PIL功能非常强大,但API却非常简单易用。

公益诉讼有如下几个模块:图像模块,ImageChops模块,ImageCrackCode模块,ImageDraw模块,ImageEnhance模块,ImageFile模块,ImageFileIO模块,ImageFilter模块,ImageFont模块,ImageGrab模块,ImageOps模块,ImagePath模块,ImageSequence模块,ImageStat模块,ImageTk模块,ImageWin模块,PSDraw模块。

在公益诉讼库中,任何一个图像都是用图像对象来表示的,所以要加载一张图片,最简单的形式如下:

得到PIL  import 形象   image =, Image.open (“1. jpeg")

在公益诉讼库中,最常用的模块有形象,ImageDraw, ImageEnhance, ImageFile等。

公益诉讼的下载地址为:http://www.pythonware.com/products/pil/

接下来学习公益诉讼中一些常见的操作:

<强> 1。改变图片大小

使用调整方法可以方便的对图片进行缩放

得到PIL  import 形象   时间=image  Image.open (“1. jpeg")   时间=new_img  image.resize ((256256), Image.BILINEAR)   new_img.save (“2. jpeg")

<强> 2。旋转图片

旋转方法可以进行旋转操作

得到PIL  import 形象   时间=image  Image.open (“1. jpeg")   时间=new_img  image.rotate (45)   new_img.save (“2. jpeg")

<强> 3。直线绘制

公益诉讼库中的ImageDraw模块提供了图形绘制的基本功能,可以绘制直线,弧线,椭圆,矩形等等。

得到PIL  import 形象,ImageDraw   时间=image  Image.open (“2. jpeg")   时间=draw  ImageDraw.Draw(图片)   宽度,height =image.size   draw.line(((0, 0),(宽度、高度1)),填补=255)   draw.line(((0,高为1),(宽度,0)),填补=255)   image.save (“2. jpeg")

<强> 4。绘制圆

得到PIL  import 形象,ImageDraw   时间=image  Image.open (“2. jpeg")   时间=draw  ImageDraw.Draw(图片)   宽度,height =image.size   draw.arc((0, 0,宽度,高度1),0360年,填补=255)   image.save (“2. jpeg")

<强> 5。中文验证码实例

现在我们来研究利用Python如何生成中文验证码。其实这个问题简单,我们都知道验证码一般是用来防止网络机器

人采用无限次数的登录尝试破解密码,那么我们需要对这张图片随机生成中文字符来验证,一般来说会把图片的字表

现得很模糊,这样有效地防止机器人识别,所以我们除了要随机生成汉字,还要加入一些干扰线条等等。

#,- *安康;编码:utf-8  - * -   得到PIL  import 形象,ImageDraw ImageFont   import 随机   import 数学,string    class  RandomChar ():   ,@staticmethod   ,def  Unicode ():   时间=val 才能;random.randint (0 x4e00, 0 x9fbf)   return 才能unichr (val),   ,@staticmethod   ,def  GB2312 ():   时间=head 才能;random.randint (0 xb0, 0 xcf)   时间=body 才能;random.randint (0 xa, 0 xf)   时间=tail 才能;random.randint (0, 0 xf)   val 才能=,(,head  & lt; & lt;, 8,), |, (body  & lt; & lt;, 4), |,尾巴   str =,才能“% x" %, val   return 才能;str.decode(& # 39;十六进制# 39;).decode (& # 39; gb2312 # 39;),   class  ImageChar:   ,def  __init__(自我,,fontColor =, (0, 0, 0),   ,,,,,,,,,,size =,(100年,40),   ,,,,,,,,,,fontPath =, & # 39; SIMSUN.TTC& # 39;   ,,,,,,,,,,bgColor =, (255,, 255,, 255),   ,,,,,,,,,,fontSize =, 20):   self.size 才能=,大小   self.fontPath 才能=fontPath   self.bgColor =,才能告诉我们   self.fontSize 才能=字形大小   self.fontColor 才能=fontColor   时间=self.font 才能;ImageFont.truetype (self.fontPath, self.fontSize)   self.image 才能=,Image.new (& # 39; rgb # 39;,,大小,背景),   ,def 旋转(自我):   self.image.rotate才能(random.randint(0,, 30),扩大=0),   ,def  drawText (pos,自我,还以为,txt,填写):   时间=draw 才能;ImageDraw.Draw (self.image)   draw.text才能(pos, txt,字体=self.font,填补=填写)   ,def  randRGB(自我):   return 才能;(random.randint (0, 255),   ,,,,,random.randint (0, 255),   ,,,,,random.randint (0, 255),   ,def  randPoint(自我):   ,,(宽度,高度),=self.size   return 才能;(random.randint(0,宽度),random.randint(0,高度)),   ,def  randLine(自我,,num):   时间=draw 才能;ImageDraw.Draw (self.image)   for 才能小姐:拷贝范围(0,num):   ,,draw.line ([self.randPoint (),, self.randPoint ()),, self.randRGB ())   ,def  randChinese(自我,,num):   null   null   null   null   null   null   null   null   null   null   null   null   null

用Python公益诉讼模块随机生成中文验证码的示例