#!/usr/bin/env python3
# -*- encoding: utf-8 -*-

'''
@File    :   __init__.py
@Time    :   2020/11/07 14:17:37
@Author  :   Kyomotoi
@Contact :   kyomotoiowo@gmail.com
@Github  :   https://github.com/Kyomotoi
@License :   Copyright © 2018-2020 Kyomotoi, All Rights Reserved.
'''
__author__ = 'kyomotoi'

import os
import string
import aiohttp
from pathlib import Path
from random import sample

import PIL.Image as Image
from PIL import ImageFile

async def aio_download_pics(url) -> str:
    '''
    下载图片并重命名

    :return: img file
    '''
    path = Path('.') / 'ATRI' / 'data' / 'data_Temp' / 'img'
    path = os.path.abspath(path)
    img_key = ''.join(sample(string.ascii_letters + string.digits, 16))
    img = path + f'\\{img_key}.png'
    async with aiohttp.ClientSession() as session:
        async with session.get(url) as response:              
            pic = await response.read()    #以Bytes方式读入非文字               
            with open(img, mode='wb') as f:# 写入文件
                f.write(pic)
                f.close()
    return img

def compress_image(outfile: str, kb=400, quality=85, k=0.9) -> str:
    '''
    压缩图片

    :return: img file
    '''
    o_size = os.path.getsize(outfile) // 1024
    if o_size <= kb:
        return outfile

    ImageFile.LOAD_TRUNCATED_IMAGES = True # type: ignore
    while o_size > kb:
        im = Image.open(outfile)
        x, y = im.size
        out = im.resize((int(x*k), int(y*k)), Image.ANTIALIAS)
        try:
            out.save(outfile, quality=quality)
        except Exception as e:
            print(e)
            break
        o_size = os.path.getsize(outfile) // 1024
    return outfile