django随机验证码

Python生成随机验证码,需要使用PIL模块.

安装:


1

pip3 install pillow

基本使用

1. 创建图片


1

2

3

4

5

6

7

8

9

from PIL import Image

img = Image.new(mode=‘RGB‘, size=(12030), color=(255255255))

 

# 在图片查看器中打开

# img.show()

 

# 保存在本地

with open(‘code.png‘,‘wb‘) as f:

    img.save(f,format=‘png‘)

2. 创建画笔,用于在图片上画任意内容


1

2

img = Image.new(mode=‘RGB‘, size=(12030), color=(255255255))

draw = ImageDraw.Draw(img, mode=‘RGB‘)

3. 画点


1

2

3

4

5

6

img = Image.new(mode=‘RGB‘, size=(12030), color=(255255255))

draw = ImageDraw.Draw(img, mode=‘RGB‘)

# 第一个参数:表示坐标

# 第二个参数:表示颜色

draw.point([100100], fill="red")

draw.point([300300], fill=(255255255))

4. 画线


1

2

3

4

5

6

img = Image.new(mode=‘RGB‘, size=(12030), color=(255255255))

draw = ImageDraw.Draw(img, mode=‘RGB‘)

# 第一个参数:表示起始坐标和结束坐标

# 第二个参数:表示颜色

draw.line((100,100,100,300), fill=‘red‘)

draw.line((100,100,300,100), fill=(255255255))

5. 画圆


1

2

3

4

5

6

7

img = Image.new(mode=‘RGB‘, size=(12030), color=(255255255))

draw = ImageDraw.Draw(img, mode=‘RGB‘)

# 第一个参数:表示起始坐标和结束坐标(圆要画在其中间)

# 第二个参数:表示开始角度

# 第三个参数:表示结束角度

# 第四个参数:表示颜色

draw.arc((100,100,300,300),0,90,fill="red")

6. 写文本


1

2

3

4

5

6

img = Image.new(mode=‘RGB‘, size=(12030), color=(255255255))

draw = ImageDraw.Draw(img, mode=‘RGB‘)

# 第一个参数:表示起始坐标

# 第二个参数:表示写入内容

# 第三个参数:表示颜色

draw.text([0,0],‘python‘,"red")

7. 特殊字体文字


1

2

3

4

5

6

7

8

9

10

img = Image.new(mode=‘RGB‘, size=(12030), color=(255255255))

draw = ImageDraw.Draw(img, mode=‘RGB‘)

# 第一个参数:表示字体文件路径

# 第二个参数:表示字体大小

font = ImageFont.truetype("kumo.ttf"28)

# 第一个参数:表示起始坐标

# 第二个参数:表示写入内容

# 第三个参数:表示颜色

# 第四个参数:表示颜色

draw.text([00], ‘python‘"red", font=font)

图片验证码


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

import random

 

def 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=(255255255))

    draw = ImageDraw.Draw(img, mode=‘RGB‘)

 

    def rndChar():

        """

        生成随机字母  

        :return:

        """

        return chr(random.randint(6590))

 

    def rndColor():

        """

        生成随机颜色

        :return:

        """

        return (random.randint(0255), random.randint(10255), random.randint(64255))

 

    # 写文字

    font = ImageFont.truetype(font_file, font_size)

    for in range(char_length):

        char = rndChar()

        code.append(char)

        = random.randint(04)

        draw.text([i * width / char_length, h], char, font=font, fill=rndColor())

 

    # 写干扰点

    for in range(40):

        draw.point([random.randint(0, width), random.randint(0, height)], fill=rndColor())

 

    # 写干扰圆圈

    for in range(40):

        draw.point([random.randint(0, width), random.randint(0, height)], fill=rndColor())

        = random.randint(0, width)

        = random.randint(0, height)

        draw.arc((x, y, x + 4, y + 4), 090, fill=rndColor())

 

    # 画干扰线

    for 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)

 

 

if __name__ == ‘__main__‘:

    # 1. 直接打开

    # img,code = check_code()

    # img.show()

 

    # 2. 写入文件

    # img,code = check_code()

    # with open(‘code.png‘,‘wb‘) as f:

    #     img.save(f,format=‘png‘)

 

    # 3. 写入内存(Python3)

    # from io import BytesIO

    # stream = BytesIO()

    # img.save(stream, ‘png‘)

    # stream.getvalue()

 

    # 4. 写入内存(Python2)

    # import StringIO

    # stream = StringIO.StringIO()

    # img.save(stream, ‘png‘)

    # stream.getvalue()

 

    pass

原文地址:https://www.cnblogs.com/jokerbj/p/8326186.html

时间: 2024-10-24 21:55:29

django随机验证码的相关文章

Django之路 - 实现登录随机验证码

登录验证码是每个网站登录时的基本标配,网上也有很多相应的文章, 但是从生成验证码到 应用到自己的网站上的全步骤,并没有看到很多, 为了节约大家的时间,我把整体步骤写下来, 即拿即用哈 1. 生成随机验证码  随机验证码代码 2. 如何应用到你的django项目中 整个验证码的流程如下 用户访问登录页面,你的后台程序在给用户返回登录页面时,同时生成了验证码图片 用户输入账户信息和验证码数字,提交表单 后台判断用户输入的验证码和你生成的图片信息是否一致,如果一致,就代表验证码是没有问题的 问题就卡在

Django随机生成验证码图片

PIL简介 什么是PIL PIL:是Python Image Library的缩写,图像处理的模块.主要的类包括Image,ImageFont,ImageDraw,ImageFilter PIL的导入 首先需要安装一下pillow包 ? 1 pip install pillow 然后就可以调用PIL里的类了 ? 1 2 3 4 from PIL import Image from PIL import ImageFont from PIL import ImageDraw from PIL im

Django中生成随机验证码

Django中生成随机验证码 1.html中a标签的设置 1 <img src="/get_validcode_img/" alt=""> 2.views中的get2.views中的getvalidcode_img设置 导入文件 1 import json 2 import os 3 import random 4 from django.contrib import auth 5 from django.shortcuts import render,

登录验证随机验证码的实现

今天我们来学习登录验证中,如何生成随机验证码?验证码使用基本都是找现成的组件来实现,用代码实现这个简单功能主要是了解了解验证码内部的实现. 友情链接 生成随机验证码基本流程:http://www.cnblogs.com/yuanchenqi/articles/7468816.html 一.效果图展示 二.代码实现 1.首先用bootstrap布一个上图简单的页面 <div class="container"> <div class="row">

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

PIL简介 什么是PIL PIL:是Python Image Library的缩写,图像处理的模块.主要的类包括Image,ImageFont,ImageDraw,ImageFilter PIL的导入 首先需要安装一下pillow包 pip install pillow 然后就可以调用PIL里的类了 from PIL import Image from PIL import ImageFont from PIL import ImageDraw from PIL import ImageFilt

7月2日 Django 生成验证码、

html页面里 {# 验证码 #} <div class="form-group " id="v-code-wrapper"> <label for="v_code_input">验证码</label> <input type="text" class="form-control" id="v_code_input" name="v_c

生成6位的随机验证码

要求:生成6位的字母和数字组成的随机验证码. 实例1: 1 import random 2 identify_code='' 3 for i in range(1): 4 for j in range(6): 5 if i==j: 6 code=chr(random.randint(65,90)) 7 else: 8 code=random.randint(0,9) 9 identify_code+=str(code) 10 11 print(identify_code) 实例2: 1 impo

学习python:实例2.用PIL生成随机验证码

效果: 代码: # 生成随机验证码图片 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

输出随机验证码图片

1 /** 2 * //输出随机验证码图片:CAPTCHA图像 3 */ 4 public class ServletDemo1 extends HttpServlet { 5 private static final long serialVersionUID = 1L; 6 7 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOEx