博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python生成随机验证码
阅读量:7260 次
发布时间:2019-06-29

本文共 3446 字,大约阅读时间需要 11 分钟。

Python生成随机验证码,需要使用PIL模块.

安装:pip3 install pillow

基本使用 创建图片

from PIL import Imageimg = Image.new(mode='RGB', size=(120, 30), color=(255, 255, 255))# 在图片查看器中打开# img.show() # 保存在本地with open('code.png','wb') as f:   img.save(f,format='png')复制代码
  1. 创建画笔,用于在图片上画任意内容
img = Image.new(mode='RGB', size=(120, 30), color=(255, 255, 255))draw = ImageDraw.Draw(img, mode='RGB')复制代码
  1. 画点
img = Image.new(mode='RGB', size=(120, 30), color=(255, 255, 255))draw = ImageDraw.Draw(img, mode='RGB')# 第一个参数:表示坐标# 第二个参数:表示颜色draw.point([100, 100], fill="red")draw.point([300, 300], fill=(255, 255, 255))复制代码
  1. 画线
img = Image.new(mode='RGB', size=(120, 30), color=(255, 255, 255))draw = ImageDraw.Draw(img, mode='RGB')# 第一个参数:表示起始坐标和结束坐标# 第二个参数:表示颜色draw.line((100,100,100,300), fill='red')draw.line((100,100,300,100), fill=(255, 255, 255))复制代码
  1. 画圆
img = Image.new(mode='RGB', size=(120, 30), color=(255, 255, 255))draw = ImageDraw.Draw(img, mode='RGB')# 第一个参数:表示起始坐标和结束坐标(圆要画在其中间)# 第二个参数:表示开始角度# 第三个参数:表示结束角度# 第四个参数:表示颜色draw.arc((100,100,300,300),0,90,fill="red")复制代码
  1. 写文本
img = Image.new(mode='RGB', size=(120, 30), color=(255, 255, 255))draw = ImageDraw.Draw(img, mode='RGB')# 第一个参数:表示起始坐标# 第二个参数:表示写入内容# 第三个参数:表示颜色draw.text([0,0],'python',"red")复制代码
  1. 特殊字体文字
img = Image.new(mode='RGB', size=(120, 30), color=(255, 255, 255))draw = ImageDraw.Draw(img, mode='RGB')# 第一个参数:表示字体文件路径# 第二个参数:表示字体大小font = ImageFont.truetype("kumo.ttf", 28)# 第一个参数:表示起始坐标# 第二个参数:表示写入内容# 第三个参数:表示颜色# 第四个参数:表示颜色draw.text([0, 0], 'python', "red", font=font)复制代码

图片验证码

# @Time    : 2018/7/17 17:05# @Author  : Ariesimport randomfrom PIL import Image,ImageDraw,ImageFont,ImageFilterdef check_code(width=120, height=30, char_length=5, font_file='KumoFont.ttf', font_size=28):  code = []  img = Image.new(mode='RGB', size=(width, height), color=(255, 255, 255))  draw = ImageDraw.Draw(img, mode='RGB')  def rndChar():      """      生成随机字母      :return:      """      return chr(random.randint(65, 90))  def rndColor():      """      生成随机颜色from      :return:      """      return (random.randint(0, 255), random.randint(10, 255), random.randint(64, 255))  # 写文字  font = ImageFont.truetype(font_file, font_size)  for i in range(char_length):      char = rndChar()      code.append(char)      h = random.randint(0, 4)      draw.text([i * width / char_length, h], char, font=font, fill=rndColor())  # 写干扰点  for i in range(40):      draw.point([random.randint(0, width), random.randint(0, height)], fill=rndColor())  # 写干扰圆圈  for i in range(40):      draw.point([random.randint(0, width), random.randint(0, height)], fill=rndColor())      x = random.randint(0, width)      y = random.randint(0, height)      draw.arc((x, y, x + 4, y + 4), 0, 90, fill=rndColor())  # 画干扰线  for i in range(5):      x1 = random.randint(0, width)      y1 = random.randint(0, height)      x2 = random.randint(0, width)      y2 = random.randint(0, height)      draw.line((x1, y1, x2, y2), fill=rndColor())  img = img.filter(ImageFilter.EDGE_ENHANCE_MORE)  return img,''.join(code)if __name__ == '__main__':   #1. 直接打开   #img,code = check_code()   #img.show()  # 2. 写入文件   img,code = check_code()   with open('code.png','wb') as f:       img.save(f,format='png')   img.show()  # 3. 写入内存(Python3)  # from io import BytesIO  # stream = BytesIO()  # img.save(stream, 'png')  # stream.getvalue()  # 4. 写入内存(Python2)  # import StringIO  # stream = StringIO.StringIO()  # img.save(stream, 'png')  # stream.getvalue()复制代码

识别图中二维码,领取python全套视频资料

转载地址:http://fpkdm.baihongyu.com/

你可能感兴趣的文章