zoukankan      html  css  js  c++  java
  • 潭州课堂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))
  • 相关阅读:
    CH the luckiest number 欧拉函数 同余
    bzoj1257余数求和 数论分块 暴力
    luogup1463 反素数
    CH3101 阶乘分解
    T10396 曹老板斗地主(中度模拟)
    NOIP 2015子串(DP)
    CF1205B Shortest Cycle(Floyd判最小环)
    P2055 [ZJOI2009]假期的宿舍(二分图匹配)
    灾后重建(最短路)
    CF1098A Sum in the tree(贪心)
  • 原文地址:https://www.cnblogs.com/gdwz922/p/10459645.html
Copyright © 2011-2022 走看看