feat: 文字转图片的图片过期处理逻辑

This commit is contained in:
Soulter
2023-05-23 10:58:07 +08:00
parent 190e0a4971
commit 36f96ccc97
3 changed files with 48 additions and 9 deletions
+4 -7
View File
@@ -114,9 +114,8 @@ class Command:
l = message.split(" ")
if len(l) < 2:
if platform == gu.PLATFORM_GOCQ:
img = gu.word2img("【插件指令面板】", "安装插件: \nplugin i 插件Github地址\n卸载插件: \nplugin i 插件名 \n重载插件: \nplugin reload\n查看插件列表:\nplugin l\n更新插件: plugin u 插件名\n")
img.save("plu.png")
return True, [Image.fromFileSystem("plu.png")], "plugin"
p = gu.create_text_image("【插件指令面板】", "安装插件: \nplugin i 插件Github地址\n卸载插件: \nplugin i 插件名 \n重载插件: \nplugin reload\n查看插件列表:\nplugin l\n更新插件: plugin u 插件名\n")
return True, [Image.fromFileSystem(p)], "plugin"
return True, "\n=====插件指令面板=====\n安装插件: \nplugin i 插件Github地址\n卸载插件: \nplugin i 插件名 \n重载插件: \nplugin reload\n查看插件列表:\nplugin l\n更新插件: plugin u 插件名\n===============", "plugin"
else:
ppath = ""
@@ -291,10 +290,8 @@ class Command:
if platform == gu.PLATFORM_GOCQ:
try:
img = gu.word2img("【指令列表】", msg)
# 保存图片到本地
img.save("help.png")
return [Image.fromFileSystem("help.png")]
p = gu.create_text_image("【指令列表】", msg)
return [Image.fromFileSystem(p)]
except BaseException as e:
gu.log(str(e))
return msg
+3 -2
View File
@@ -116,10 +116,11 @@ class QQ:
max_width: 文本宽度最大值(默认30)
font_size: 字体大小(默认20
返回:PIL的Image对象
返回:文件路径
'''
try:
img = gu.word2img(title, text, max_width, font_size)
return img
p = gu.save_temp_img(img)
return p
except Exception as e:
raise e
+41
View File
@@ -1,4 +1,5 @@
import datetime
import time
import socket
from PIL import Image, ImageDraw, ImageFont
import os
@@ -129,3 +130,43 @@ def word2img(title: str, text: str, max_width=30, font_size=20):
draw.text((10, title_height+20), text, fill=(0, 0, 0), font=text_font)
return image
def save_temp_img(img: Image) -> str:
if not os.path.exists("temp"):
os.makedirs("temp")
# 获得文件创建时间,清除超过1小时的
try:
for f in os.listdir("temp"):
path = os.path.join("temp", f)
if os.path.isfile(path):
ctime = os.path.getctime(path)
if time.time() - ctime > 3600:
os.remove(path)
except Exception as e:
log(f"清除临时文件失败: {e}", level=LEVEL_WARNING, tag="GeneralUtils")
# 获得时间戳
timestamp = int(time.time())
p = f"temp/{timestamp}.png"
img.save(p)
return p
def create_text_image(title: str, text: str, max_width=30, font_size=20):
'''
文本转图片。
title: 标题
text: 文本内容
max_width: 文本宽度最大值(默认30)
font_size: 字体大小(默认20
返回:文件路径
'''
try:
img = word2img(title, text, max_width, font_size)
p = save_temp_img(img)
return p
except Exception as e:
raise e