From e1fcaf9161385bb1a358e47c2fbcf29d90d5aedc Mon Sep 17 00:00:00 2001 From: SXP-Simon Date: Sun, 14 Sep 2025 22:31:21 +0800 Subject: [PATCH] =?UTF-8?q?[fix]=20(reports\generators)=20=E6=8F=90?= =?UTF-8?q?=E9=AB=98=20image=20=E6=A0=BC=E5=BC=8F=E8=BE=93=E5=87=BA?= =?UTF-8?q?=E7=9A=84=E5=9B=BE=E7=89=87=E5=88=86=E6=9E=90=E6=8A=A5=E5=91=8A?= =?UTF-8?q?=E7=9A=84=E8=B4=A8=E9=87=8F=EF=BC=8C=E6=8F=90=E9=AB=98=E5=88=86?= =?UTF-8?q?=E8=BE=A8=E7=8E=87=20=E5=8F=82=E8=80=83=20astrbot\core\utils\t2?= =?UTF-8?q?i\network=5Fstrategy.py=20=E6=83=85=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit self.html_render 方法实际上是调用 HtmlRenderer.render_custom_template() 方法 查看 astrbot\core\utils\t2i\network_strategy.py,得出结论可以通过 options 参数来控制图片质量 传入 image_options,设置 "quality": 95,得到更高质量的图片报告,提高了分辨率 --- src/reports/generators.py | 38 ++++++++++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/src/reports/generators.py b/src/reports/generators.py index a107672..466b689 100644 --- a/src/reports/generators.py +++ b/src/reports/generators.py @@ -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