def get_valid_img(request):
# 方式2:基于PIL模块创建验证码图片
from PIL import Image, ImageDraw, ImageFont
from io import BytesIO def get_random_color():
import random
return (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)) # img=Image.new("RGB",(350,38),get_random_color())
# f=open("valid.png","wb")
# img.save(f,"png")
# with open("valid.png","rb") as f:
# data=f.read() # 方式3:
# img=Image.new("RGB",(350,38),get_random_color())
# f=BytesIO()
# img.save(f,"png")
# data=f.getvalue() # # 方式4:完善文本
#
# img=Image.new("RGB",(350,38),get_random_color())
# draw=ImageDraw.Draw(img)
# font=ImageFont.truetype("static/font/kumo.ttf",32)
# draw.text((0,0),"python!",get_random_color(),font=font)
#
# # 写与读
# f=BytesIO()
# img.save(f,"png")
# data=f.getvalue() # 方式5:
#
img = Image.new("RGB", (170, 35), get_random_color())
draw = ImageDraw.Draw(img)
font = ImageFont.truetype("static/font/kumo.ttf", 32)
keep_str = ""
for i in range(4):
random_num = str(random.randint(0, 9))
random_lowalf = chr(random.randint(97, 122))
random_upperalf = chr(random.randint(65, 90))
random_char = random.choice([random_num, random_lowalf, random_upperalf])
draw.text((i * 30 + 30, 0), random_char, get_random_color(), font=font)
keep_str += random_char # 加噪点
width = 170
height = 35
for i in range(6):
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(6):
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())
# 写与读
f = BytesIO()
img.save(f, "png")
data = f.getvalue()
print('keep_str', keep_str)
# 将验证码存在各自的session中
request.session['keep_str'] = keep_str return HttpResponse(data)

基于PIL模块创建验证码图片的更多相关文章

  1. 使用Python的PIL模块来进行图片对比

    使用Python的PIL模块来进行图片对比 在使用google或者baidu搜图的时候会发现有一个图片颜色选项,感觉非常有意思,有人可能会想这肯定是人为的去划分的,呵呵,有这种可能,但是估计人会累死, ...

  2. Python利用PIL生成随机验证码图片

    安装pillow: pip install pillow PIL中的Image等模块提供了创建图片,制作图片的功能,大致的步骤就是我们利用random生成6个随机字符串,然后利用PIL将字符串绘制城图 ...

  3. 基于Picture Library创建的图片文档库中的上传多个文件功能(upload multiple files)报错怎么解决?

    复现过程 首先,我创建了一个基于Picture Library的图片文档库,名字是 Pic Lib 创建完毕后,我点击它的Upload 下拉菜单,点击Upload Picture按钮 在弹出的对话框中 ...

  4. python 用 PIL 模块 画验证码

    PIL 简单绘画 def get_code_img(request): from PIL import Image, ImageDraw, ImageFont import random def ra ...

  5. C# 创建验证码图片

    using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; us ...

  6. 纯代码系列:Python实现验证码图片(PIL库经典用法用法,爬虫12306思路)

    现在的网页中,为了防止机器人提交表单,图片验证码是很常见的应对手段之一.这里就不详细介绍了,相信大家都遇到过. 现在就给出用Python的PIL库实现验证码图片的代码.代码中有详细注释. #!/usr ...

  7. python模块之PIL模块(生成随机验证码图片)

    PIL简介 什么是PIL PIL:是Python Image Library的缩写,图像处理的模块.主要的类包括Image,ImageFont,ImageDraw,ImageFilter PIL的导入 ...

  8. 使用模块PIL 生成 随机验证码

    --------------默认自己无能,无疑是给失败制造机会!你认为自己是什么样的人,就将成为什么样的人. 要使用PIL模块. 安装: 1 pip3 install pillow 基本使用 1. 创 ...

  9. Python使用PIL模块生成随机验证码

    PIL模块的安装 pip3 install pillow 生成随机验证码图片 import random from PIL import Image, ImageDraw, ImageFont fro ...

随机推荐

  1. 常用es5和es6语法区别,以及三个点的用法

    链接:https://www.jianshu.com/p/b4d48e9846e7 //三个点 链接:https://blog.csdn.net/qiladuo1207/article/details ...

  2. 关于archive(feature)

    配置如下archive命令,可以记录登录到设备,具体配置了哪些命令: R3(config)#archiveR3(config-archive)#log configR3(config-archive- ...

  3. 关于找不到指定的模块,异常来自HRESULT:0x8007007E的解决方法

    上午从公司前辈那里拷贝到的ASP.NET代码,在自己机器上部署的时候发现问题,直接报错,找不到指定的模块,异常来自HRESULT:0x8007007E.并且一大堆警告. 在网上百度很多解决方法,归纳如 ...

  4. Docker容器的操作命令

    Docker容器的操作命令 写该文章时候的初衷是在使用Docker for windows 的时候遇到的一些问题.起初我在运行好docker客户端以后,创建了一个.NET Core应用发布到docke ...

  5. i.MX RT600之I2S外设介绍及应用

    恩智浦的i.MX RT600是跨界处理器产品,同样也是i.MX RTxxx系列的开山之作.不同于i.MX RT1xxx系列单片机,i.MX RT600 采用了双核架构,将新一代Cortex-M33内核 ...

  6. typeof方法重写(区分数组对象)

    为什么要重写typeof方法? typeof 可以准确的判断除object以外的基础数据类型,但不能区分object类型的具体类型,比如 Array .Date.NULL.NaN 以及自定义类. 观察 ...

  7. where、having区别

    where  <<   group by   <<   having where筛选是在分组之前筛选,筛选完之后再group by having是分组之后再筛选,筛选完之前先g ...

  8. java课后问题解答

    1.当有多个嵌套的try…catch…finally时,要特别注意finally的执行时机 答:当有多层嵌套的finally时,异常在不同的层次抛出 ,在不同的位 置抛出,可能会导致不同的finall ...

  9. 新手如何配置 Chromedriver 环境变量

    有一个不错的链接:https://blog.csdn.net/qq_41429288/article/details/80472064

  10. 【转】bug management process

    What is Bug? A bug is the consequence/outcome of a coding fault What is Defect? A defect is a variat ...