生成随机验证码图片
来源:互联网 发布:哪个牌子的网络电视好 编辑:程序博客网 时间:2024/06/06 16:54
安装 PIL模块
- pip3 install pillow
生成 图片
from PIL import Imageimg = Image.new(mode='RGB',size=(120,30),color=(0,255,255))# 查看 图片# img.show()# 保存 图片 到本地with open('code.png','wb') as f: img.save(f,format='png')
- 创建画笔,在图片上画内容
from PIL import Image,ImageDrawimg = Image.new(mode='RGB',size=(120,30),color=(0,255,255))draw = ImageDraw.Draw(img,mode='RGB')# 画点draw.point([100,10],fill='red')draw.point([100, 20], fill='red')draw.point([100, 25], fill='red')# 画线draw.line((10,10,100,20),fill=(255,0,255))# 画圆draw.arc((0,0,30,20),0,360,fill='red')# 写文字draw.text([0,0],'python','red') # 加入特殊字体from PIL import ImageFontfont = ImageFont.truetype('kumo.ttf',28)draw.text([0,0],'python','red',font=font)
- 上面 是把生成写入本地 这种方法是不好的,应该把这个图片写入到内存里
from PIL import Image,ImageDraw,ImageFontfrom io import BytesIOf = BytesIO()img = Image.new(mode='RGB',size=(120,30),color=(0,255,255))draw = ImageDraw.Draw(img,mode='RGB')# .......img.save(f,'png')# 取图片data = f.getvalue()
- 生成随机验证码图片
# views.pydef check_code(request): from io import BytesIO from utils.random_check_code import rd_check_code img,code = rd_check_code() stream = BytesIO() img.save(stream,'png') request.session['code'] = code return HttpResponse(stream.getvalue())# random_check_code.pyfrom PIL import Image,ImageDraw,ImageFont,ImageFilterimport randomdef rd_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=(255, 255, 255)) draw = ImageDraw.Draw(img, mode='RGB') def rndChar(): """ 生成随机字母 :return: """ return chr(random.randint(65, 90)) def rndColor(): """ 生成随机颜色 :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)
阅读全文
0 1
- 随机生成图片验证码
- 随机生成图片验证码
- 随机生成图片验证码
- 生成随机验证码图片
- 生成随机图片验证码
- 随机生成图片验证码
- 随机生成图片验证码
- 生成随机图片验证码
- 随机生成图片验证码
- 生成随机验证码图片
- 随机生成图片验证码
- jsp随机验证码图片生成
- jsp生成随机验证码图片
- ASP.NET随机生成验证码图片
- 随机生成一个验证码图片
- Java随机生成验证码图片
- 生成随机数字的图片验证码
- JAVA生成随机验证码图片
- Android开发工具adb的使用
- Redis学习手册
- ftp服务器上传文件
- 数组及字符串理解
- C语言的条件编译
- 生成随机验证码图片
- 找新朋友
- 声音内在组成原理的学习
- POJ3041: Asteroids 题解
- SparkStreaming之 StreamingContext、DStream、Receiver深度剖析-3
- 工作队列线程
- FPGA基础设计(三):UART串口通信
- 用Python爬取个人微信朋友信息
- 手把手教你Homestead安装,并填坑