lxinghua

博客园 首页 新随笔 联系 订阅 管理
  117 随笔 :: 0 文章 :: 0 评论 :: 7553 阅读

一、PIL库

PIL : Python图像库PIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了。

环境中下载:pip install pillow

图像验证码

1. 初始化: 字符长度,宽度,高度,字符大小;

2. 随机产生字符:26个大小写字母和10个数字为源;

3. 随机颜色:让字符的颜色随机;

4. 绘制干扰线和干扰点

5. 模糊滤镜

同样,将图像验证码文件放置在utils文件夹编写,需求时进行导入调用

复制代码
import os
import random
import string
from PIL import Image, ImageFont, ImageDraw, ImageFilter


class ImageVerify:
    def __init__(self, x=140, y=40, length=4, size=28):
        """
        初始化
        :param x: 图片宽度
        :param y: 图片高度
        :param length: 字符的个数
        :param size: 字体大小
        """
        self.x = x
        self.y = y
        self.length = length
        self.size = size

    def random_str(self):
        """
        随机生成制定长度的字符串
        数据源:26个字母和10个数字
        :return: 生成的字符串
        """
        soucre = string.ascii_letters + string.digits   # string模块生成字符串信息
        return ''.join(random.sample(soucre, self.length))

    def random_color(self, start=0, end=255):
        """
        随机生成颜色
        :param start: 颜色范围最小值
        :param end:  颜色范围最大值
        :return: tuple(r, g, b) 0~255
        """
        res = [random.randint(start, end) for i in range(3)] # []得到数据列表,()得到生成器并非元组,所以生成列表后转成元组
        return tuple(res)

    def random_lines(self, draw):
        """
        绘制干扰线
        :param draw: draw对象 画笔
        :return:
        """
        for i in range(self.length):
            lines = [(random.randint(0, self.x), random.randint(0, self.y)) for i in range(2)]
            draw.line(lines, fill=self.random_color(64, 200))

    def random_points(self, draw, rate):
        """
        绘制干扰点
        :param draw: 画笔
        :param rate: 频率
        :return:
        """
        for x in range(self.x):
            for y in range(self.y):
                if random.randint(1,  100) <= rate:
                    draw.point((x, y), fill=self.random_color(64, 200))

    def verify_code(self):
        """
        生成验证码图片
        :return: 图片及正确答案
        """
        # 创建Image对象 创建画布
        image = Image.new('RGB', (self.x, self.y), (255, 255, 255))   # 白色背景画布

        # 创建font对象 字体
        file = os.path.dirname(os.path.abspath(__file__))
        font = ImageFont.truetype(f'{file}/cybb.ttf', self.size)

        # 创建draw对象 画笔,绘制图形,线,点
        draw = ImageDraw.Draw(image)

        # 绘制干扰线与干扰点
        self.random_lines(draw)
        self.random_points(draw, 15)

        # 随机生成字符答案,验证码值
        code = self.random_str()

        # 用画笔将font类型的字体对应的进行字符内容和颜色的绘制
        for i in range(self.length):
            draw.text((35*i+5, 3), code[i], font=font, fill=self.random_color(30, 128))

        # 模糊滤镜
        # image = image.filter(ImageFilter.BLUR)

        # 返回图形及验证码
        return image, code


if __name__ == '__main__':
    imgVerfiy = ImageVerify()
    img, code = imgVerfiy.verify_code()
    # with open('test.png', 'wb') as fp:
    #     img.save(fp)
    # print(code)
复制代码

二、Redis缓存

1. 连接配置

config/dbs文件夹中新建redis_rev.py文件,给定redis配置(可直接在settings.py文件中给定,因为也是需要调用导入的)

2. 缓存配置

settings.py文件配置

3. 使用

用户views.py文件中进行调用

4. 自定义认证响应

定义函数处理返回数据

settins.py配置函数为自定义认证响应函数

三、前端项目

1.  VUE3

JS的框架,是一套构建用户界面的渐进式框架。只关注视图层,采用自底向上增量开发的设计。通过尽可能简单的API实现响应的数据绑定和组合的视图组件。

①下载安装  百度直接搜索 node.js,进入官网进行下载,然后安装,可自选路径;

②cmd,执行npm install -g @vue/cli 即可

③ vue -V   确认版本,若出现对应版本则安装OK

④前端启动,进入pyCharm文件夹的nod.js文件夹中,在抬头输入npm启动vue的cmd界面(跟启动juepyter notebook类似)(没有对应的前端文件)

2. 

四、前端环境

posted on   興華  阅读(53)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示