You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

html2image是否支持img标签?本地图片加载失败问题排查与解决咨询

解决html2image无法加载本地图片的问题

别担心,html2image完全支持<img>标签,你遇到的问题是路径上下文差异导致的:当直接传递HTML字符串给html_str参数时,html2image会在临时独立环境中渲染内容,这个环境不会关联你的Python脚本所在目录,因此相对路径"example.jpg"无法被正确解析;而浏览器打开本地HTML文件时,会自动以该HTML文件所在目录为基准查找资源,所以能正常显示图片。

下面给你几个可行的解决办法:

1. 使用图片的绝对路径

通过Python的os模块获取图片的绝对路径,直接写入HTML字符串中,让Chromium渲染时能精准定位到图片文件:

from html2image import Html2Image
import os

hti = Html2Image()
# 获取图片的绝对路径
img_abs_path = os.path.abspath("example.jpg")
html_str =f""" <!DOCTYPE html> <html> <body> <img src="{img_abs_path}"> </body> </html> """
css_str =""" body { margin: 0; background: black; } """

hti.screenshot(html_str=html_str, css_str=css_str, save_as="test.png")

2. 将图片转为Base64嵌入HTML

把图片内容编码成Base64字符串,直接嵌入到<img>的src属性中,无需依赖外部文件,兼容性更强:

from html2image import Html2Image
import base64

hti = Html2Image()
# 读取图片并转为Base64
with open("example.jpg", "rb") as img_file:
    img_base64 = base64.b64encode(img_file.read()).decode('utf-8')

html_str =f""" <!DOCTYPE html> <html> <body> <img src="data:image/jpeg;base64,{img_base64}"> </body> </html> """
css_str =""" body { margin: 0; background: black; } """

hti.screenshot(html_str=html_str, css_str=css_str, save_as="test.png")

3. 先保存HTML文件再加载

将HTML字符串保存为本地文件,然后使用html_file参数代替html_str加载,这样相对路径会以该HTML文件的目录为基准:

from html2image import Html2Image
import os

hti = Html2Image()
html_str =""" <!DOCTYPE html> <html> <body> <img src="example.jpg"> </body> </html> """
css_str =""" body { margin: 0; background: black; } """

# 临时保存HTML文件
with open("temp_render.html", "w", encoding="utf-8") as f:
    f.write(html_str)

hti.screenshot(html_file="temp_render.html", css_str=css_str, save_as="test.png")

# 可选:清理临时文件
os.remove("temp_render.html")

以上三种方法都能解决你的问题,你可以根据自身场景选择最合适的方案。

内容的提问来源于stack exchange,提问作者robert schüler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 18:37:33