标签:img randint python random 验证码 color get data 四中
import random from io import BytesIO from PIL import Image, ImageDraw, ImageFont from django.shortcuts import render, HttpResponse def get_random_color(): return (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)) def get_validCode_img(request): # 方式1: # with open('1.jpeg', 'rb') as f: # data = f.read() # return HttpResponse(data) # 方式2(在硬盘上生成、读取图片): # img = Image.new('RGB', (260, 34), color=get_random_color()) # # with open('validCode.png', 'wb') as f: # img.save(f, 'png') # # with open('validCode.png', 'rb') as f: # data = f.read() # # return HttpResponse(data) # 方式3(在内存中生成、读取图片): # img = Image.new('RGB', (260, 34), color=get_random_color()) # # f = BytesIO() # 用完之后,BytesIO会自动清掉 # img.save(f, 'png') # data = f.getvalue() # # return HttpResponse(data) # 方式4(给image加文字): img = Image.new('RGB', (260, 34), color=get_random_color()) draw = ImageDraw.Draw(img) kumo_font = ImageFont.truetype('static/font/kumo.ttf', size=28) valid_code_str = '' for i in range(5): random_num = str(random.randint(0, 9)) random_low_alpha = chr(random.randint(97, 122)) random_high_alpha = chr(random.randint(65, 90)) random_char = random.choice([random_num, random_low_alpha, random_high_alpha]) draw.text((i * 50 + 20, 5), random_char, get_random_color(), font=kumo_font) # 保存验证码字符串 valid_code_str += random_char # 噪点噪线 width = 260 height = 34 for i in range(5): x1 = random.randint(0, width) x2 = random.randint(0, width) y1 = random.randint(0, height) y2 = random.randint(0, height) draw.line((x1, y1, x2, y2), fill=get_random_color()) for i in range(5): draw.point([random.randint(0, width), random.randint(0, height)], fill=get_random_color()) x = random.randint(0, width) y = random.randint(0, height) draw.arc((x, y, x + 4, y + 4), 0, 90, fill=get_random_color()) # 保存验证码字符串到该用户的session request.session['valid_code_str'] = valid_code_str f = BytesIO() # 用完之后,BytesIO会自动清掉 img.save(f, 'png') data = f.getvalue() return HttpResponse(data)
标签:img,randint,python,random,验证码,color,get,data,四中 来源: https://www.cnblogs.com/lshedward/p/10375294.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。