From f7198e8722f310926cf147bd0b218c5d9ef5d6c3 Mon Sep 17 00:00:00 2001 From: Kyomotoi <1172294279@qq.com> Date: Sun, 22 Nov 2020 01:01:43 +0800 Subject: [Update] MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增: * 舆情检测 * 对涩图加以调用限制 修复: * Pixiv插件全体 * 储存群聊信息时无法创建文件 优化: * 部分代码重构,效率up * 调整插件结构,使其看起来更舒服 --- ATRI/utils/utils_img/__init__.py | 62 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 ATRI/utils/utils_img/__init__.py (limited to 'ATRI/utils/utils_img') diff --git a/ATRI/utils/utils_img/__init__.py b/ATRI/utils/utils_img/__init__.py new file mode 100644 index 0000000..7b79146 --- /dev/null +++ b/ATRI/utils/utils_img/__init__.py @@ -0,0 +1,62 @@ +#!/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 -- cgit v1.2.3