pillow模块

一、pillow 模块

1、使用时先导入,既是:from PIL import ......    (注意这里不是 from pillow 而是 from PIL)

 

 2、Image   是用来产生图片的

用法:Image.new()

 

3、ImageDraw  是用来在图片上写字的

4、ImageFont   是用来控制图片上的字体样式的

5、ImageFilter  是用来对图片进行模糊操作的

用法:

   # 推导步骤4:如何产生图片并在上面写字
   img_obj = Image.new('RGB',(350,35),get_random())
   # 产生针对该图片的画笔对象
   img_draw = ImageDraw.Draw(img_obj)
   # 产生一个字体样式对象
   img_font = ImageFont.truetype(r'/static/font/333.ttf',35)  # 第一个参数是字体样式的路径。第二个参数是字体的大小.r 表示防转义

 

二、内存管理器(IO)模块

1、使用时先导入,既是:from io import BytesIO,StringIO

 

2、BytesIO   表示:能够临时帮你保存数据,获取的时候以二进制方式返回给你

3、StringIO  表示:能够临时帮你保存数据,获取的时候以字符串方式返回给你

4、使用方法: .getvalue()   表示从io内存管理器中读出数据

  # 推导步骤3:利用io内存管理器临时存取产生的图片数据
   img_obj = Image.new('RGB',(350,35),(123,132,11))  # 第三个参数可以是颜色的英文,也可以是三基色数字
   io_obj = BytesIO()
   img_obj.save(io_obj,'png')             # 把生成的图片存进io内存管理器中
   return HttpResponse(io_obj.getvalue()) # io_obj.getvalue() 表示从io内存管理器中读出 图片

 5、产生随机验证码

 # 如何产生5位随机验证码
   code = ''             # 先定义一个空验证码。这个验证码还要后端校验
   for i in range(5):
      upper_str = chr(random.randint(65,90)) # 产生一个大写字母。chr(数字) 表示产生askii码中 对应的字符
      lower_str = chr(random.randint(96,122))
      random_int = str(random.randint(0,9))

      # 每循环一次就 随机取上面一个
      temp_str = random.choice([upper_str,lower_str,random_int])
      # 每取一个就用画笔写到图片上
      # 第一个参数是指 放的位置: x:45+i*60  y:0  i*60表示每写一个 就往后移动60的距离。第二个参数是 文本内容。第三个是 字体颜色 第四个是 字体样式
      img_draw.text((45+i*60,0),temp_str,get_random(),img_font)

      # 存储产生的随机验证码
      code += temp_str

6、点击图片就会局部刷新图片信息

方法:给图片绑定一个点击事件

规律:只要src中的url请求发生变化了,再去点击图片就会刷新图片信息

 

 

 7、两种绑定点击事件:

01、.click(function(){})

02、.on('click',function({}))

<script>
    {#给图片绑定点击事件#}
    $('#id_img').click(function () {
        {# 先拿到图片的src   $(this) 表示的是 这个图片imga标签。 .attr('src') 表示 拿出src的值#}
        var oldSrc = $(this).attr('src');
        {# attr('src',oldSrc += '?')  表示 给src 设值为:原来的src值加上?#}
        $(this).attr('src',oldSrc += '?')

    });

    {#给登录按钮绑定点击事件#}
    $('#id_submit').on('click',function () {
        $.ajax({
            url:'',
            type:'post',
            data:{
                'username':$('#id_username').val(),                 $('#id_username') 表示找到 用户名这个标签框。 .val() 表示取出框中的值
                'password':$('#id_password').val(),
                'csrfmiddlewaretoken':'{{ csrf_token }}',           这是模板语法取值
                'code':$('#id_code').val()
            }
            
        })
        
    })

</script>

 8、我踩的坑

 

 三、首页功能

jason 的位置 表示的是:动态展示用户名 

 

 

 

 

 当清掉前端的 session值后,再刷新页面就是

 

 修改密码页面

四、知识点

01、js插件中 有:模态框  取消按钮

取消按钮 : <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>

 02、组件中  有:导航条  媒体对象(可以渲染文章)   面板(渲染广告)

03、hr 标签是分割线

        br 标签是用来顶距离的 

posted @ 2020-02-01 13:10  薛定谔的猫66  阅读(678)  评论(0编辑  收藏  举报