快速创建Django验证码
# 生成随机验证码图片
import string
from random import randint, sample
from PIL import Image, ImageDraw, ImageFont, ImageFilter
# Image 负责处理图片
# ImageDraw 画笔
# ImageFont 文字
# ImageFileter 滤镜
# 定义变量
img_size = (150,50) # 定义画布大小
img_rgb = (255,255,255) # 定义画布颜色,白色
img = Image.new("RGB",img_size,img_rgb)
img_text =. " ".join(sample(string.ascii_letters+string.digits, 5))
# print(img_text.replace(‘ ‘,‘‘))
# 画图
drow = ImageDraw.Draw(img)
for i in range(10):
# 随机画线
drow.line([tuple(sample(range(img_size[0]),2)), tuple(sample(range(img_size[0]),2))], fill=(0,0,0))
for i in range(99):
# 随机画点
drow.point(tuple(sample(range(img_size[0]),2)), fill=(0,0,0))
# 文字
font = ImageFont.truetype("/usr/share/fonts/truetype/fonts-beng-extra/mitra.ttf", 24) # 定义文字字体和大小
drow.text((6,6), img_text, font=font, fill="green")
# 扭曲图片和滤镜
params = [
1 - float(randint(1,2)) / 100,
0,
0,
0,
1 - float(randint(1,10)) /100,
float(randint(1,2)) / 500,
0.001,
float(randint(1,2)) / 500
]
img = img.transform(img_size, Image.PERSPECTIVE, params)
img = img.filter(ImageFilter.EDGE_ENHANCE_MORE)
# 展示图片
# img.show()
img.save('1.jpg','jpeg')
快速创建Django验证码的更多相关文章
- 测开大佬告诉你:如何5分钟快速创建restful风格的API接口-使用django restframework框架
一.思考❓❔ 1.创建API接口难吗? 软件测试工程师: 只测过API接口, 从没创建过 应该需要掌握一门后端开发语言和后端开发框架吧!? 脑容量有限,想想就可怕 2.如何创建API接口呢? 使用Dj ...
- Django快速创建博客,包含了整个框架使用过程,简单易懂
创建工程 ...
- BBS项目详解(forms快速创建登陆页面,登陆验证、通过阅读器进行头像上传的预览、内存管理器)
BBS项目涉及的知识点 django中知识点 钩子函数(局部钩子和全局钩子) 1.局部钩子就是用来做合法性校验,比如用户名有没有被使用等 2.全局的就是用来做对比校验,比如两次输入的密码是否一致 3. ...
- Django基础,Day1 - 环境安装与pycharm创建django项目
Django是一个高级Python Web框架,支持快速部署,清理和实用的设计.它可以被轻易部署和提供实用的组件,而开发人员只需要专注于写自己的应用程序,而不需要重复造轮子.并且Django是自由和开 ...
- golang包快速生成base64验证码
base64Captcha快速生成base64编码图片验证码字符串 支持多种样式,算术,数字,字母,混合模式,语音模式. Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一.Base6 ...
- Django-下载安装-配置-创建django项目-三板斧简单使用
目录 Django 简介 使用 django 的注意事项 计算机名不能有中文 Django版本问题 django下载安装 在命令行下载安装 在pycharm图形界面下载安装 检验是否安装成功 创建Dj ...
- 关于创建Django表单Forms继承BaseForm的问题
在创建Django表单时,因为需要验证用户输入的验证码是否正确,因此需要在session里提取当前验证码的值和POST提交过来的值进行比对,如图: form.py from django import ...
- django 验证码(django-simple-captcha)
django 验证码(django-simple-captcha) django-simple-captcha 官方文档(含基于modelForm的用法) https://django-simple ...
- python创建Django项目
创建Django项目 关注公众号"轻松学编程"了解更多. 创建一个HelloDjango项目 GitHub地址:https://github.com/liangdongchang/ ...
随机推荐
- java的多构造函数的处理方式
/** * */ package P; import java.awt.List; import java.lang.reflect.Array; import java.util.ArrayList ...
- BZOJ1040 骑士 基环外向树
1040: [ZJOI2008]骑士 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 6421 Solved: 2544[Submit][Status ...
- egrep对于conf文件中去掉#注释,排除无用项
[root@localhost conf]# egrep -v "#|^$" nginx.conf.default > nginx.conf dd
- eclipse web(Spring+SpringMVC+Hibernate)项目迁移至intellij idea
1.导入Eclipseweb项目 跟着导航一直下一步 出现警告不要担心,先点击确认,到后面再进行设置jdk 成功导入项目后如下图 2.对导入的项目进行配置按Ctrl+shift+alt+s(或下图中的 ...
- ubuntu安装GraphicsMagick
一. sudo apt-get install graphicsmagick 二. http://www.cnblogs.com/cocowool/archive/2010/08/16/1800954 ...
- jquery中的get和post、ajax有关返回值的问题描述
一:前言 今天我就要离开公司回学校准备考试,在走之前,我自己做的一个模块测试除了一些小的bug.问题如下 我在往数据库中插入数据,首先要选择一级菜单,接着会更具一级菜单生成一级菜单的子目录,在选择日期 ...
- [Leetcode Week6]Linked List Cycle II
Linked List Cycle II 题解 题目来源:https://leetcode.com/problems/linked-list-cycle-ii/description/ Descrip ...
- python基础===文件对象的访问模式,以及计数循环的使用方法
案例一: 一个几M的文本文件,需要每隔100行写到新的文件中. 代码实现如下: with open(r'f:\book.txt','rb') as f1: with open(r'f:\book2.t ...
- Android之BInder分析
MediaService的诞生: nt main(int argc, char** argv) { //FT,就这么简单?? //获得一个ProcessState实例 sp<ProcessS ...
- Selenium2+python自动化65-js定位几种方法总结【转载】
前言 本篇总结了几种js常用的定位元素方法,并用js点击按钮,对input输入框输入文本 一.以下总结了5种js定位的方法 除了id是定位到的是单个element元素对象,其它的都是elements返 ...