[fix] (reports\generators) 提高 image 格式输出的图片分析报告的质量,提高分辨率

参考 astrbot\core\utils\t2i\network_strategy.py 情况

self.html_render 方法实际上是调用 HtmlRenderer.render_custom_template() 方法

查看  astrbot\core\utils\t2i\network_strategy.py,得出结论可以通过 options 参数来控制图片质量

传入 image_options,设置 "quality": 95,得到更高质量的图片报告,提高了分辨率
This commit is contained in:
SXP-Simon
2025-09-14 22:31:21 +08:00
parent 8f7af1ed81
commit e1fcaf9161
+34 -4
View File
@@ -25,14 +25,44 @@ class ReportGenerator:
try:
# 准备渲染数据
render_payload = await self._prepare_render_data(analysis_result)
# 使用AstrBot内置的HTML渲染服务(直接传递模板和数据)
image_url = await html_render_func(HTMLTemplates.get_image_template(), render_payload)
# 使用兼容的图片生成选项(基于NetworkRenderStrategy的默认设置)
image_options = {
"full_page": True,
"type": "jpeg", # 使用默认的jpeg格式提高兼容性
"quality": 95, # 设置合理的质量
}
image_url = await html_render_func(
HTMLTemplates.get_image_template(),
render_payload,
True, # return_url=True,返回URL而不是下载文件
image_options
)
logger.info(f"图片生成成功: {image_url}")
return image_url
except Exception as e:
logger.error(f"生成图片报告失败: {e}")
return None
logger.error(f"生成图片报告失败: {e}", exc_info=True)
# 尝试使用更简单的选项作为后备方案
try:
logger.info("尝试使用低质量选项重新生成...")
simple_options = {
"full_page": True,
"type": "jpeg",
"quality": 70 # 降低质量以提高兼容性
}
image_url = await html_render_func(
HTMLTemplates.get_image_template(),
render_payload,
True,
simple_options
)
logger.info(f"使用低质量选项生成成功: {image_url}")
return image_url
except Exception as fallback_e:
logger.error(f"后备低质量方案也失败: {fallback_e}")
return None