首页 > 编程语言 >python生成随机码-转至武沛齐老师

python生成随机码-转至武沛齐老师

时间:2022-08-19 15:22:14浏览次数:77  
标签:draw img 随机码 python random 武沛齐 RGB mode 255

 

 

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

安装:

1 pip3 install pillow

基本使用

1. 创建图片

1 2 3 4 5 6 7 8 9 from PIL import Image img = Image.new(mode='RGB', size=(12030), color=(255255255))   # 在图片查看器中打开 # img.show()    # 保存在本地 with open('code.png','wb') as f:     img.save(f,format='png')

2. 创建画笔,用于在图片上画任意内容

1 2 img = Image.new(mode='RGB', size=(12030), color=(255255255)) draw = ImageDraw.Draw(img, mode='RGB')

3. 画点

1 2 3 4 5 6 img = Image.new(mode='RGB', size=(12030), color=(255255255)) draw = ImageDraw.Draw(img, mode='RGB') # 第一个参数:表示坐标 # 第二个参数:表示颜色 draw.point([100100], fill="red") draw.point([300300], fill=(255255255))

4. 画线

1 2 3 4 5 6 img = Image.new(mode='RGB', size=(12030), color=(255255255)) draw = ImageDraw.Draw(img, mode='RGB') # 第一个参数:表示起始坐标和结束坐标 # 第二个参数:表示颜色 draw.line((100,100,100,300), fill='red') draw.line((100,100,300,100), fill=(255255255))

5. 画圆

1 2 3 4 5 6 7 img = Image.new(mode='RGB', size=(12030), color=(255255255)) draw = ImageDraw.Draw(img, mode='RGB') # 第一个参数:表示起始坐标和结束坐标(圆要画在其中间) # 第二个参数:表示开始角度 # 第三个参数:表示结束角度 # 第四个参数:表示颜色 draw.arc((100,100,300,300),0,90,fill="red")

6. 写文本

1 2 3 4 5 6 img = Image.new(mode='RGB', size=(12030), color=(255255255)) draw = ImageDraw.Draw(img, mode='RGB') # 第一个参数:表示起始坐标 # 第二个参数:表示写入内容 # 第三个参数:表示颜色 draw.text([0,0],'python',"red")

7. 特殊字体文字

1 2 3 4 5 6 7 8 9 10 img = Image.new(mode='RGB', size=(12030), color=(255255255)) draw = ImageDraw.Draw(img, mode='RGB') # 第一个参数:表示字体文件路径 # 第二个参数:表示字体大小 font = ImageFont.truetype("kumo.ttf"28) # 第一个参数:表示起始坐标 # 第二个参数:表示写入内容 # 第三个参数:表示颜色 # 第四个参数:表示颜色 draw.text([00], 'python'"red", font=font)

图片验证码

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 import random   def check_code(width=120, height=30, char_length=5, font_file='kumo.ttf', font_size=28):     code = []     img = Image.new(mode='RGB', size=(width, height), color=(255255255))     draw = ImageDraw.Draw(img, mode='RGB')       def rndChar():         """         生成随机字母            :return:         """         return chr(random.randint(6590))       def rndColor():         """         生成随机颜色         :return:         """         return (random.randint(0255), random.randint(10255), random.randint(64255))       # 写文字     font = ImageFont.truetype(font_file, font_size)     for in range(char_length):         char = rndChar()         code.append(char)         = random.randint(04)         draw.text([i * width / char_length, h], char, font=font, fill=rndColor())       # 写干扰点     for in range(40):         draw.point([random.randint(0, width), random.randint(0, height)], fill=rndColor())       # 写干扰圆圈     for in range(40):         draw.point([random.randint(0, width), random.randint(0, height)], fill=rndColor())         = random.randint(0, width)         = random.randint(0, height)         draw.arc((x, y, x + 4, y + 4), 090, fill=rndColor())       # 画干扰线     for 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')       # 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()       pass

注意:字体文件下载,猛击这里


作者:武沛齐
出处:http://www.cnblogs.com/wupeiqi/

标签:draw,img,随机码,python,random,武沛齐,RGB,mode,255
From: https://www.cnblogs.com/python-tuanzi/p/16602090.html

相关文章

  • Python中,函数的返回值
    deffun(num):odd=[]#存奇数even=[]#存偶数foriinnum:ifi%2:odd.append(i)else:even.append(i)re......
  • python激活
    Pycharm又过期了怎么办? 方法一:(亲测可用)1、打开网址: lookdiv.com 2、在输入框输入钥匙:lookdiv.com3、点击“获取激活码”按钮,获取激活码 4.激活后可以使用几......
  • python-zip()函数-zip*函数-压缩-解压缩
    python-zip()函数-压缩-解压缩zip()函数:将多个序列(列表、元组、字典、集合、字符串以及range()构成的列表)按一定规则重新组成一组元组。常与list()函数搭配使用,list......
  • python中的@的使用
    在python中,@是一个装饰器,针对某个函数,起调用传参的作用。具体怎么用的可以参考如下代码:defA(fn):print("a")fn()defB():print("b")@AdefC():......
  • python数据类型---字典dict
    python数据类型---字典dict1.基本认识字典是Python里一种常用的数据类型,键值对,keyvalue对,它用于存放具有映射关系的数据。字典中的数据是无顺序的。。。。。。d={key......
  • python菜鸟学习: 10. 函数的基本用法
    #-*-coding:utf-8-*-#回参函数deftest01():return0#以元组返回参数deftest02():return1,[1,2,3,4,5],{"name":"liyuzhoupan"}#有参函数deftest......
  • 【Python】使用requests_html解析HTML页面
    1、官网https://pypi.org/project/requests-html/ 2、githubhttps://github.com/kennethreitz/requests-html 3、安装pipinstallrequests-html  4、使用......
  • Python数据类型
    在Python3中,有6种标准的数据类型:Number(数字)、String(字符串)、List(列表)、Tuple(元组)、Set(集合)、Dictionary(字典),见表2-2。  Python3中支持3种不同的数值类型,包括int(整型......
  • Pybinder-python与c++的调用
    目录Areallygoodproject.ExportCpptopythonunerLinuxplatformAreallygoodproject.https://github.com/pybind/pybind11https://github.com/pybind/pyb......
  • 解决python import找不到自定义包的问题
    文件结构如下├──A│├──a.py│├──__init__.py│└──b.py├──B│├──c.py│├──__init__.py│└──d.py想在c.py调用......