这篇文章将为大家详细讲解有关用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公益诉讼模块随机生成中文验证码的示例