基于PIL模块创建验证码图片
- 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模块创建验证码图片的更多相关文章
- 使用Python的PIL模块来进行图片对比
使用Python的PIL模块来进行图片对比 在使用google或者baidu搜图的时候会发现有一个图片颜色选项,感觉非常有意思,有人可能会想这肯定是人为的去划分的,呵呵,有这种可能,但是估计人会累死, ...
- Python利用PIL生成随机验证码图片
安装pillow: pip install pillow PIL中的Image等模块提供了创建图片,制作图片的功能,大致的步骤就是我们利用random生成6个随机字符串,然后利用PIL将字符串绘制城图 ...
- 基于Picture Library创建的图片文档库中的上传多个文件功能(upload multiple files)报错怎么解决?
复现过程 首先,我创建了一个基于Picture Library的图片文档库,名字是 Pic Lib 创建完毕后,我点击它的Upload 下拉菜单,点击Upload Picture按钮 在弹出的对话框中 ...
- python 用 PIL 模块 画验证码
PIL 简单绘画 def get_code_img(request): from PIL import Image, ImageDraw, ImageFont import random def ra ...
- C# 创建验证码图片
using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; us ...
- 纯代码系列:Python实现验证码图片(PIL库经典用法用法,爬虫12306思路)
现在的网页中,为了防止机器人提交表单,图片验证码是很常见的应对手段之一.这里就不详细介绍了,相信大家都遇到过. 现在就给出用Python的PIL库实现验证码图片的代码.代码中有详细注释. #!/usr ...
- python模块之PIL模块(生成随机验证码图片)
PIL简介 什么是PIL PIL:是Python Image Library的缩写,图像处理的模块.主要的类包括Image,ImageFont,ImageDraw,ImageFilter PIL的导入 ...
- 使用模块PIL 生成 随机验证码
--------------默认自己无能,无疑是给失败制造机会!你认为自己是什么样的人,就将成为什么样的人. 要使用PIL模块. 安装: 1 pip3 install pillow 基本使用 1. 创 ...
- Python使用PIL模块生成随机验证码
PIL模块的安装 pip3 install pillow 生成随机验证码图片 import random from PIL import Image, ImageDraw, ImageFont fro ...
随机推荐
- html和css的重难点知识
目录 html总难点总结: 1. 块级标签与内联标签的区别 1.1 块级标签: 1.2 内联标签: 2. 选择器 2.1 定义 2.2 选择器的分类 2.1 选择器的分类 3. css中margin, ...
- GO Range
Go 语言中 range 关键字用于 for 循环中迭代数组(array).切片(slice).通道(channel)或集合(map)的元素.在数组和切片中它返回元素的索引和索引对应的值,在集合中返回 ...
- WLAN配置SKC
1.关于SKC WLC支持粘滞密钥缓存(Sticky Key Caching,SKC). 通过SKC,客户端为其关联的每个AP接收并存储不同的PMKID. AP还维护发布给客户端的PMKID数据库. ...
- Java面向对象编程 -3.3
综合实战 简单Java类 在以后进行项目开发与设计的过程之中,简单Java类都将作为一个重要的组成部分存在,慢慢接触到正规的项目设计后, 简单Java类无处不再,并且有可能产生一系列的变化. 所谓的简 ...
- vue.js ②
1.Vue实例的生命周期钩子 每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听.编译模板.将实例挂载到 DOM 并在数据变化时更新 DOM 等.同时在这个过程中也会运行 ...
- C语言中的快速排序函数
C库中有自带的快排函数 qsort() ; 它的函数原型为: void qsort(void * , size_t ,size_t size , int (__cdecl *)(const void ...
- 在visual studio中快速添加代码段
昨天我在网课上,看到老师输入#2之后,立马就出现了一堆代码. 我于是赶紧打开自己的visual studio尝试一下,并没有任何反应. 上网查找,发现visual studio有自定义代码段的功能. ...
- 设计模式课程 设计模式精讲 3-8 迪米法特原则讲解及Coding
1 课程讲解 1.1 定义 1.2 特质 1.3 重点 2 代码演练 2.1 反例 2.2 正例 1 课程讲解 1.1 定义 定义:一个对象应该对其他对象保持最少的了解.又叫最少知道原则. 1.2 特 ...
- HTML5中改变了哪些东西?
HTML5 推出的理由 想要把目前web上存在的各种问题一并解决 Web浏览器之间的兼容性很低 文档结构不够明确 Web应用程序的功能受到了限制 HTML5重新定义了浏览器的统一标准 HTML5 与 ...
- Keras下载的数据集以及预训练模型保存在哪里
Keras下载的数据集在以下目录中: root\\.keras\datasets Keras下载的预训练模型在以下目录中: root\\.keras\models 在win10系统来说,用户主目录是: ...