mirror of
https://github.com/zhayujie/chatgpt-on-wechat.git
synced 2026-03-18 12:40:06 +08:00
Merge pull request #1 from 6vision/patch-1
Optimize image download and storage logic
This commit is contained in:
@@ -16,6 +16,7 @@ from channel.wework.wework_message import WeworkMessage
|
|||||||
from common.singleton import singleton
|
from common.singleton import singleton
|
||||||
from common.log import logger
|
from common.log import logger
|
||||||
from common.time_check import time_checker
|
from common.time_check import time_checker
|
||||||
|
from common.utils import compress_imgfile, fsize
|
||||||
from config import conf
|
from config import conf
|
||||||
from channel.wework.run import wework
|
from channel.wework.run import wework
|
||||||
from channel.wework import run
|
from channel.wework import run
|
||||||
@@ -38,12 +39,25 @@ def download_and_compress_image(url, filename, quality=30):
|
|||||||
os.makedirs(directory)
|
os.makedirs(directory)
|
||||||
|
|
||||||
# 下载图片
|
# 下载图片
|
||||||
response = requests.get(url)
|
pic_res = requests.get(url, stream=True)
|
||||||
image = Image.open(io.BytesIO(response.content))
|
image_storage = io.BytesIO()
|
||||||
|
for block in pic_res.iter_content(1024):
|
||||||
|
image_storage.write(block)
|
||||||
|
|
||||||
# 压缩图片
|
# 检查图片大小并可能进行压缩
|
||||||
image_path = os.path.join(directory, f"{filename}.jpg")
|
sz = fsize(image_storage)
|
||||||
image.save(image_path, "JPEG", quality=quality)
|
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
|
return image_path
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user