Python生成随机验证码,需要使用PIL模块,具体内容如下
安装:
pip3 install pillow
基本使用
1. 创建图片
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')
2. 创建画笔,用于在图片上画任意内容
img = Image.new(mode='RGB',255))draw = ImageDraw.Draw(img,mode='RGB')
3. 画点
img = Image.new(mode='RGB',mode='RGB')# 第一个参数:表示坐标# 第二个参数:表示颜色draw.point([100,100],fill="red")draw.point([300,300],fill=(255,255))
4. 画线
img = Image.new(mode='RGB',mode='RGB')# 第一个参数:表示起始坐标和结束坐标# 第二个参数:表示颜色draw.line((100,100,300),fill='red')draw.line((100,300,100),255))
5. 画圆
img = Image.new(mode='RGB',mode='RGB')# 第一个参数:表示起始坐标和结束坐标(圆要画在其中间)# 第二个参数:表示开始角度# 第三个参数:表示结束角度# 第四个参数:表示颜色draw.arc((100,90,fill="red")
6. 写文本
img = Image.new(mode='RGB',mode='RGB')# 第一个参数:表示起始坐标# 第二个参数:表示写入内容# 第三个参数:表示颜色draw.text([0,0],'python',"red")
7. 特殊字体文字
img = Image.new(mode='RGB',mode='RGB')# 第一个参数:表示字体文件路径# 第二个参数:表示字体大小Font = ImageFont.truetype("kumo.ttf",28)# 第一个参数:表示起始坐标# 第二个参数:表示写入内容# 第三个参数:表示颜色# 第四个参数:表示颜色draw.text([0,"red",Font=Font)
图片验证码
import randomdef 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),mode='RGB')def rndChar():"""生成随机字母 :return:"""return chr(random.randint(65,90))def rndcolor():"""生成随机颜色:return:"""return (random.randint(0,255),random.randint(10,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,fill=rndcolor())x = random.randint(0,wIDth)y = random.randint(0,height)draw.arc((x,y,x + 4,y + 4),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')# 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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。
总结以上是内存溢出为你收集整理的Python使用PIL模块生成随机验证码全部内容,希望文章能够帮你解决Python使用PIL模块生成随机验证码所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)