summaryrefslogtreecommitdiff
path: root/ATRI/utils/utils_img
diff options
context:
space:
mode:
authorKyomotoi <[email protected]>2020-11-22 01:01:43 +0800
committerKyomotoi <[email protected]>2020-11-22 01:01:43 +0800
commitf7198e8722f310926cf147bd0b218c5d9ef5d6c3 (patch)
treef4c3d0f2a003695b67e0e2018ec8d88898bcda90 /ATRI/utils/utils_img
parent6c3e4c7f583be0006cd7bb913b7db81b987d2813 (diff)
downloadATRI-f7198e8722f310926cf147bd0b218c5d9ef5d6c3.tar.gz
ATRI-f7198e8722f310926cf147bd0b218c5d9ef5d6c3.tar.bz2
ATRI-f7198e8722f310926cf147bd0b218c5d9ef5d6c3.zip
[Update]
新增: * 舆情检测 * 对涩图加以调用限制 修复: * Pixiv插件全体 * 储存群聊信息时无法创建文件 优化: * 部分代码重构,效率up * 调整插件结构,使其看起来更舒服
Diffstat (limited to 'ATRI/utils/utils_img')
-rw-r--r--ATRI/utils/utils_img/__init__.py62
1 files changed, 62 insertions, 0 deletions
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 : [email protected]
+@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