Exemplo n.º 1
0
 def post(self):
     remove_file(get_asset_path(self.current_user.background_img))
     self.current_user.background_img = ''
     try:
         orm.commit()
     except:
         pass
     result = {"status": "success", "message": "已成功重置背景图片"}
     self.send_result(result)
Exemplo n.º 2
0
 def post(self):
     remove_file(get_asset_path(self.current_user.background_img))
     self.current_user.background_img = ''
     try:
         orm.commit()
     except:
         pass
     result = {"status": "success", "message": "已成功重置背景图片"}
     self.send_result(result)
Exemplo n.º 3
0
 def get(self):
     user = self.current_user
     if user.avatar:
         try:
             os.system('rm -f %s*' % get_asset_path(user.avatar[:user.avatar.rfind('x')]))
         except:
             pass
         user.avatar = None
     self.redirect(self.next_url)
Exemplo n.º 4
0
 def get(self):
     user = self.current_user
     if user.avatar:
         try:
             os.system('rm -f %s*' %
                       get_asset_path(user.avatar[:user.avatar.rfind('x')]))
         except:
             pass
         user.avatar = None
     self.redirect(self.next_url)
Exemplo n.º 5
0
    def post(self):
        user = self.current_user
        x = int(self.get_argument('x', 0))
        y = int(self.get_argument('y', 0))
        w = int(self.get_argument('w', 128))
        h = int(self.get_argument('h', 128))

        box = (x, y, x + w, y + h)
        avatar = get_asset_path(user.avatar_tmp)

        image_format = avatar[avatar.rfind('.'):]
        save_path = avatar[:avatar.rfind('.')]

        image = Image.open(avatar).crop(box)
        tmp_name = save_path + '_crop' + image_format
        image.save(tmp_name)

        size_set = ((48, 48), (60, 60), (128, 128))

        def resize(size):
            image_ = Image.open(avatar).crop(box).resize(size, Image.ANTIALIAS)
            tmp_name_ = '%sx%d%s' % (save_path, size[0], image_format)
            image_.save(tmp_name_)

        with futures.ThreadPoolExecutor(max_workers=len(size_set)) as exe:
            list(exe.map(resize, size_set))

        if user.avatar:
            try:
                os.system('rm -f %s*' %
                          get_asset_path(user.avatar[:user.avatar.rfind('.')]))
            except:
                pass
        user.avatar = user.avatar_tmp
        try:
            orm.commit()
        except:
            pass
        src = self.current_user.avatar_tmp
        avatar = self.current_user.get_avatar(size=128)
        data = {"src": src, "avatar": avatar}
        return self.send_success_result(msg=u'头像设置成功', **data)
Exemplo n.º 6
0
    def post(self):
        user = self.current_user
        x = int(self.get_argument('x', 0))
        y = int(self.get_argument('y', 0))
        w = int(self.get_argument('w', 128))
        h = int(self.get_argument('h', 128))

        box = (x, y, x + w, y + h)
        avatar = get_asset_path(user.avatar_tmp)

        image_format = avatar[avatar.rfind('.'):]
        save_path = avatar[:avatar.rfind('.')]

        image = Image.open(avatar).crop(box)
        tmp_name = save_path + '_crop' + image_format
        image.save(tmp_name)

        size_set = ((48, 48), (60, 60), (128, 128))

        def resize(size):
            image_ = Image.open(avatar).crop(box).resize(size, Image.ANTIALIAS)
            tmp_name_ = '%sx%d%s' % (save_path, size[0], image_format)
            image_.save(tmp_name_)

        with futures.ThreadPoolExecutor(max_workers=len(size_set)) as exe:
            list(exe.map(resize, size_set))

        if user.avatar:
            try:
                os.system('rm -f %s*' % get_asset_path(user.avatar[:user.avatar.rfind('.')]))
            except:
                pass
        user.avatar = user.avatar_tmp
        try:
            orm.commit()
        except:
            pass
        src = self.current_user.avatar_tmp
        avatar = self.current_user.get_avatar(size=128)
        data = {"src": src, "avatar": avatar}
        return self.send_success_result(msg=u'头像设置成功', **data)
Exemplo n.º 7
0
 def reset_img(self, category):
     if category == 'background':
         path = self.background_img
         self.background_img = ''
     elif category == 'head':
         path = self.head_img
         self.head_img = ''
     else:
         return False
     try:
         remove_file(get_asset_path(path))
         return True
     except:
         return False
Exemplo n.º 8
0
 def post(self):
     if not self.has_permission:
         return
     user = self.current_user
     if not user:
         return self.redirect_next_url()
     if self.request.files == {} or 'myimage' not in self.request.files:
         self.write({"status": "error", "message": "对不起,请选择图片"})
         return
     image_type_list = [
         'image/gif', 'image/jpeg', 'image/pjpeg', 'image/png', 'image/bmp',
         'image/x-png'
     ]
     send_file = self.request.files['myimage'][0]
     if send_file['content_type'] not in image_type_list:
         self.write({
             "status":
             "error",
             "message":
             "对不起,仅支持 jpg, jpeg, bmp, gif, png\
                     格式的图片"
         })
         return
     if len(send_file['body']) > 6 * 1024 * 1024:
         self.write({"status": "error", "message": "对不起,请上传6M以下的图片"})
         return
     tmp_file = tempfile.NamedTemporaryFile(delete=True)
     tmp_file.write(send_file['body'])
     tmp_file.seek(0)
     try:
         image_one = Image.open(tmp_file.name)
     except IOError as error:
         logging.info(error)
         logging.info('+' * 30 + '\n')
         logging.info(self.request.headers)
         tmp_file.close()
         self.write({"status": "error", "message": "对不起,此文件不是图片"})
         return
     width = image_one.size[0]
     height = image_one.size[1]
     if width < 80 or height < 80 or width > 30000 or height > 30000:
         tmp_file.close()
         self.write({
             "status": "error",
             "message": "对不起,请上传长宽在80px~30000px之间的图片!"
         })
         return
     user = self.current_user
     upload_path = os.path.join(config.upload_path, get_year(), get_month())
     mkdir_p(upload_path)
     timestamp = str(int(time.time())) + gen_random_str() + '_' + str(
         user.id)
     image_format = send_file['filename'].split('.').pop().lower()
     filename = timestamp + '.' + image_format
     tmp_path = os.path.join(upload_path, filename)
     image_one.save(tmp_path)
     tmp_file.close()
     path = '/' + get_relative_path(tmp_path)
     category = self.get_argument('category', None)
     del_path = None
     if category == 'head':
         del_path = user.head_img
         user.head_img = path
         data = {'path': path, 'category': 'head'}
     elif category == 'background':
         del_path = user.background_img
         user.background_img = path
         data = {'path': path, 'category': 'background'}
     else:
         data = {'path': path, 'category': 'other'}
     if del_path:
         remove_file(get_asset_path(del_path))
     return self.send_success_result(**data)
Exemplo n.º 9
0
 def post(self):
     if not self.has_permission:
         return
     user = self.current_user
     if not user:
         return self.redirect_next_url()
     if self.request.files == {} or 'myimage' not in self.request.files:
         self.write({"status": "error",
                     "message": "对不起,请选择图片"})
         return
     image_type_list = ['image/gif', 'image/jpeg', 'image/pjpeg',
                        'image/png', 'image/bmp', 'image/x-png']
     send_file = self.request.files['myimage'][0]
     if send_file['content_type'] not in image_type_list:
         self.write({"status": "error",
                     "message": "对不起,仅支持 jpg, jpeg, bmp, gif, png\
                     格式的图片"})
         return
     if len(send_file['body']) > 6 * 1024 * 1024:
         self.write({"status": "error",
                     "message": "对不起,请上传6M以下的图片"})
         return
     tmp_file = tempfile.NamedTemporaryFile(delete=True)
     tmp_file.write(send_file['body'])
     tmp_file.seek(0)
     try:
         image_one = Image.open(tmp_file.name)
     except IOError as error:
         logging.info(error)
         logging.info('+' * 30 + '\n')
         logging.info(self.request.headers)
         tmp_file.close()
         self.write({"status": "error",
                     "message": "对不起,此文件不是图片"})
         return
     width = image_one.size[0]
     height = image_one.size[1]
     if width < 80 or height < 80 or width > 30000 or height > 30000:
         tmp_file.close()
         self.write({"status": "error",
                     "message": "对不起,请上传长宽在80px~30000px之间的图片!"})
         return
     user = self.current_user
     upload_path = os.path.join(config.upload_path, get_year(), get_month())
     mkdir_p(upload_path)
     timestamp = str(int(time.time())) + gen_random_str() + '_' + str(user.id)
     image_format = send_file['filename'].split('.').pop().lower()
     filename = timestamp + '.' + image_format
     tmp_path = os.path.join(upload_path, filename)
     image_one.save(tmp_path)
     tmp_file.close()
     path = '/' + get_relative_path(tmp_path)
     category = self.get_argument('category', None)
     del_path = None
     if category == 'head':
         del_path = user.head_img
         user.head_img = path
         data = {'path': path, 'category': 'head'}
     elif category == 'background':
         del_path = user.background_img
         user.background_img = path
         data = {'path': path, 'category': 'background'}
     else:
         data = {'path': path, 'category': 'other'}
     if del_path:
         remove_file(get_asset_path(del_path))
     return self.send_success_result(**data)