zoukankan      html  css  js  c++  java
  • pil模块 StringIO | BytesIO

    一、操作内存的流 - StringIO | BytesIO

    from io import StringIO, BytesIO
    # 创建操作字符串的内存流
    sf = StringIO()
    # 往内存中写
    sf.write('hello')
    # 在内存总取
    sf.getvalue()
    
    # 创建操作二进制的内存流
    bf = BytesIO()
    # 往内存中写
    bf.write('hello'.encode('utf-8'))
    # 在内存总取
    bf.getvalue()

     二、PIL:python图片操作库

    # 1、生成图片
    from PIL import Image
    # 生成一个Image类对象(准图片):模式、尺寸、颜色
    img = Image.new('RGB', (80, 80), color=(255, 0, 0))  # Type: Image
    # 将Image类对象采用具体格式放入具体的文件流中
    bf = BytesIO()  # eg: 内存字节流
    img.save(bf, 'png')
    
    # 2、产生文字颜色
    from PIL import ImageFont
    # 产生某种ttf格式的30px大小文字
    img_font = ImageFont.truetype('*.ttf', 30)
    
    # 3、画图
    from PIL import ImageDraw
    # 在具体的Image对象上画图
    img_draw = ImageDraw.Draw(img)
    # 画文字:xy轴、文本、颜色、ImageFont字体
    img_draw.text((x, y), 'abc', 'red', img_font)

    三、 前端解析二进制流图片(了解)

    // 向指定url请求图片二进制流转换为blob:格式的src
    var xhr = new XMLHttpRequest();
    xhr.open('GET', url, true);  // url
    xhr.responseType = "blob";
    xhr.onreadystatechange = function () {
        if (xhr.readyState == 4) {
            if (xhr.status == 200) {
                var blod = this.response;
                var src = URL.createObjectURL(blod);  // src
            }
        }
    };
    xhr.send();

    四、Admin自动化数据管理界面

    • admin的概念

    # Admin是Django自带的一个功能强大的自动化数据管理界面
    # 被授权的用户可以直接在Admin中操作数据库
    # Django提供了许多针对Admin的定制功能
    • 配置并访问自动化数据管理界面

    # 终端项目目录创建一个超级用户:python3 manage.py createsuperuser
    # eg:Username:root | Email:root@root.com | Password:1234qwer
    # 浏览器Admin入口:http://127.0.0.1:8000/admin
    # 设置Admin界面为中文环境:项目下settings.py,LANGUAGE_CODE = 'zh-Hans'
    # 简体:zh-hans | 繁体:zh-hant | 美式英语:en-us
    • 将指定映射添加到自动化数据管理界面

    # 应用下的admin.py中,注册映射对应关系的类
    from . import models
    admin.site.register(models.Article)
    • 格式化界面字段显示名与表名

    # 为应用下models.py映射关系类重写__str__方法
    class Article(models.Model):
        title = models.CharField(max_length=32, default='Title', verbose_name="标题")
        content = models.TextField(null=True, verbose_name="内容")
        # 重写__str__方法,格式化该类实例对象的表示方式
        def __str__(self):
            return self.title
        class Meta:
            verbose_name = "文章"
            verbose_name_plural = verbose_name
     
  • 相关阅读:
    C# 上传图片前判断上传图片的宽和高
    PHP调用WebService
    js判断输入字符串长度(汉字算两个字符,字母数字算一个)
    js 验证电话号 座机及手机号
    C# 微信扫码支付 回调页面
    复制文件夹及文件
    html失去获得焦点
    SQL 大数据查询如何进行优化?
    sql表内存占用情况,并进行缩放
    查询被锁的表
  • 原文地址:https://www.cnblogs.com/peng-zhao/p/10539465.html
Copyright © 2011-2022 走看看