• 潭州课堂25班:Ph201805201 tornado 项目 第六课 用户和图片分享的集成(课堂笔记)


    tornado 相关说明 

    改善图片上传功能 ,生成唯一的 ID ,与路径拼接,生成 URL,

    这里引用 uuid 的 python 库

    在 photo.py 中创建个类,用来  辅助用户上传的图片,生成相关缩略图,记录图片相关 URL ,并保存到数据库

    把用户上传图片,生成缩略图,URL,保存信息到数据库放进一个类里,
    class UploadImg:
    """
    辅助用户上传的图片,生成相关缩略图,记录图片相关 URL ,并保存到数据库
    """
    upload_dir = 'uploads'
    thumb_dir = 'thumb'
    size = (200,200)

    def __init__(self, old_name, static_path):
    self.old_name = old_name
    self.static_path = static_path
    self.name = self.get_new_name()

    def get_new_name(self):
    '''
    生成一个唯一的字符串,用来做图片保存的字句
    :return:
    '''
    # 拿到图片名的后缀
    _, ext = os.path.splitext(self.old_name)
    # 返回 16 位字符串, 生成新名字
    return uuid.uuid4().hex + ext

    @property
    def upload_url(self):
    '''
    用来保存图片相对路径的 url
    :return:
    '''
    return os.path.join(self.upload_dir, self.name)

    @property
    def upload_path(self):
    '''
    保存图片的文件路径
    :return:
    '''
    return os.path.join(self.static_path, self.upload_url)

    def save_upload(self, content):
    """图片上传,保存"""
    save_to = self.upload_path
    with open(self.upload_path, 'wb') as fh:
    # 把文件内容写到指定文件路径中
    fh.write(content)

    @property
    def thumb_url(self):
    '''
    生成用来保存缩略图相关路径的 url
    :return:

    '''
    _, ext = os.path.splitext(self.old_name)
    thumb_name = '{}_{}X{}{}'.format(self.name, self.size[0], self.size[1], ext)
    return os.path.join(self.upload_dir,
    self.thumb_dir,
    thumb_name)

    def save_thumb(self):
    """生成缩略图"""
    # PIL 要操作的文件路径,
    im = Image.open(self.upload_path)
    # 缩略图生成
    im.thumbnail(self.size)
    # 保存缩略图
    # 分离文件名和扩展名

    im.save(os.path.join(self.static_path, self.thumb_url))
  • 相关阅读:
    建表关系
    设计模式-策略模式
    设计模式-适配器模式
    在线操作word和在线预览查找的资料记录
    Elasticsearch 使用-安装
    12-factors
    Kafka 使用-安装
    Apache Zookeeper 使用-安装
    Java 使用-安装
    设计模式-模板方法模式
  • 原文地址:https://www.cnblogs.com/gdwz922/p/10459645.html
Copyright © 2020-2023  润新知