Python利用枕头(公益诉讼)库实现验证码图片的示例

  介绍

今天就跟大家聊聊有关Python利用枕头(公益诉讼)库实现验证码图片的示例,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

<强>一、验证码图片的效果

 #=utf - 8编码
  进口随机
  从公益诉讼导入图像,ImageDraw ImageFont
  
  
  宽度、高度、font_size font_num=300, 100年,48岁的5
  bg_color=(随机的。randint(0, 255),随机的。randint(0, 255),随机的。randint (0, 255))
  形象=Image.new(模式=& # 39;rgb # 39;,大?(宽度、高度),颜色=bg_color)
  画=ImageDraw。画(图片模式=& # 39;rgb # 39;)
  字体=ImageFont.truetype (“C: \ Windows \ \ Arial.ttf"字体,font_size)
  验证=str ()
  因为我在范围(font_num):
  x=random.randint(我*(宽/font_num), (i + 1) *(宽/font_num) -font_size)
  y=随机的。height-font_size randint (0)
  char=random.choice(空空的阿尔法(α)范围(65、91)]+ [str (num) num范围(10)))
  验证+=字符
  颜色=(随机的。randint(0, 255),随机的。randint(0, 255),随机的。randint (0, 255))
  画画。文本((x, y), char,填补=颜色、字体(字体)
  打印(验证)
  image.show()

运行结果:

KG7CQ

Python利用Pillow(PIL)库实现验证码图片的示例

上面的代码已经实现了生成随机验证码的功能,现在介绍代码中用到的函数和方法。

Image.new(): Image模块中的new()函数,创建一张图片(画布),用于绘图。传入3个参数,画布的模式('RGB'表示真彩图片)、尺寸和颜色,画布的颜色就是验证码中的背景颜色。

ImageDraw.Draw(): ImageDraw模块中的Draw()函数,实例化一个ImageDraw类的对象draw,执行绘图。传入两个参数,画布和绘图的模式,画布使用前面Image.new()创建的画布,模式继续使用'RGB'真彩模式。Draw()函数会将传入的两个参数传给ImageDraw类,实例化一个类对象并返回,以便后面使用类对象draw调用对应的方法执行绘图,使用draw对象将验证码中的字符画在画布上。

ImageFont.truetype(): ImageFont模块中的truetype()函数,从字体文件或字体对象中读取字体并返回一个字体对象。传入两个参数,字体文件(或字体对象)和字体大小。字体只能使用当前电脑支持的字体,在Windows系统中,已安装的字体一般都保存在C:\Windows\Fonts文件夹中,如上面代码中的C:\Windows\Fonts\Arial.ttf,应该每个人都默认安装了,在代码中一定要带上扩展名'.ttf',否则读取不到字体文件。如果字体不在Windows\Fonts这个目录下,可以在控制面板找或直接在所有文件中搜索Fonts。字体大小传入一个数字即可。

Python利用Pillow(PIL)库实现验证码图片的示例

random模块中的randint()和choice()。在上面的代码中,randint()用于随机生成颜色值,随机生成字符在画布上的x和y坐标。choice()用于从26个大写字母(chr字符集中65~90为26个大写字母)和数字中随机选择一个字符。

text(): ImageDraw模块的ImageDraw类的方法,使用ImageDraw.Draw()返回的类对象draw来调用,将字符画到画布上。text()方法有12个参数,并且还可以接收其他的可变参数和关键字参数,不过只有两个必传参数,上面的代码中也只传了4个参数,所以其他的参数就不做介绍了。第一个必传参数是xy,传入一个元组或列表,表示字符画到画布上的位置坐标(字符左上角),第二个必传参数是text,传入一个字符串,表示需要画的字符。上面还传了两个参数fill和font,fill表示字符的颜色,传入一个随机的颜色,font表示字符的字体,传入用ImageFont.truetype()函数返回的字体对象。

循环将每次随机生成的字符绘画到画布上,再使用image对象的show()方法将图片显示出来,随机的验证码图片就生成成功了。

进口随机
  从公益诉讼导入图像,ImageDraw ImageFont
  
  
  def gen_verified_image ():
  宽度、高度、font_size font_num=400, 150年,48岁的4
  bg_color=(随机的。randint(0, 255),随机的。randint(0, 255),随机的。randint (0, 255))
  形象=Image.new(模式=& # 39;rgb # 39;,大?(宽度、高度),颜色=bg_color)
  画=ImageDraw。画(图片模式=& # 39;rgb # 39;)
  字体=ImageFont.truetype (“C: \ Windows \ \ Gadugi.ttf"字体,font_size)
  验证=str ()
  因为我在范围(font_num):
  x=随机的。randint(我*(宽/font_num) + 10 (i + 1) *(宽/font_num) - font_size - 10)
  y=随机的。randint(20、身高- font_size - 20)
  char=random.choice(杆(一)范围内(65、91)]+杆(b)范围(97、123)]的b +
  (str (num) num范围(10)))
  验证+=字符
  颜色=(随机的。randint(0, 255),随机的。randint(0, 255),随机的。randint (0, 255))
  画画。文本((x, y), char,填补=颜色、字体(字体)
  返回图像,验证
  
  
  if __name__==& # 39; __main__ # 39;:
  图像,验证=gen_verified_image ()
  打印(验证)
  image.show () 

Python利用枕头(公益诉讼)库实现验证码图片的示例