diff --git a/channel/wework/wework_channel.py b/channel/wework/wework_channel.py index 5182789..87a0016 100644 --- a/channel/wework/wework_channel.py +++ b/channel/wework/wework_channel.py @@ -16,6 +16,7 @@ from channel.wework.wework_message import WeworkMessage from common.singleton import singleton from common.log import logger from common.time_check import time_checker +from common.utils import compress_imgfile, fsize from config import conf from channel.wework.run import wework from channel.wework import run @@ -38,12 +39,25 @@ def download_and_compress_image(url, filename, quality=30): os.makedirs(directory) # 下载图片 - response = requests.get(url) - image = Image.open(io.BytesIO(response.content)) - - # 压缩图片 - image_path = os.path.join(directory, f"{filename}.jpg") - image.save(image_path, "JPEG", quality=quality) + pic_res = requests.get(url, stream=True) + image_storage = io.BytesIO() + for block in pic_res.iter_content(1024): + image_storage.write(block) + + # 检查图片大小并可能进行压缩 + sz = fsize(image_storage) + if sz >= 10 * 1024 * 1024: # 如果图片大于 10 MB + logger.info("[wework] image too large, ready to compress, sz={}".format(sz)) + image_storage = compress_imgfile(image_storage, 10 * 1024 * 1024 - 1) + logger.info("[wework] image compressed, sz={}".format(fsize(image_storage))) + + # 将内存缓冲区的指针重置到起始位置 + image_storage.seek(0) + + # 读取并保存图片 + image = Image.open(image_storage) + image_path = os.path.join(directory, f"{filename}.png") + image.save(image_path, "png") return image_path diff --git a/requirements-optional.txt b/requirements-optional.txt index 17c4c1f..dadd5df 100644 --- a/requirements-optional.txt +++ b/requirements-optional.txt @@ -22,8 +22,11 @@ wechaty_puppet>=0.4.23 web.py wechatpy +# wework +pilk +ntwork + # chatgpt-tool-hub plugin ---extra-index-url https://pypi.python.org/simple chatgpt_tool_hub==0.4.6 # xunfei spark