为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Python 的 HTML 到 IMAGE

使用 Python 的 HTML 到 IMAGE

慕姐8265434 2022-08-25 15:37:17
下面是一个变量html_str,它是一个字符串,其中包含 html 标记和正文中的内容。我使用python中的以下代码从此字符串创建了一个.html文件。html_file = open("filename.html", "w") html_file.write(html_str) html_file.close()现在我得到了名为文件名“文件名.html”的html文件。现在我想将“文件名.html”转换为名为文件名的图像.jpg其中包含html文件的确切内容。请帮帮我。
查看完整描述

4 回答

?
www说

TA贡献1775条经验 获得超8个赞

您可以使用imgkit来执行此操作


import imgkit


imgkit.from_file('test.html', 'out.jpg')

或者您也可以使用 htmlcsstoimage Api


# pip3 install requests

import requests


HCTI_API_ENDPOINT = "https://hcti.io/v1/image"

HCTI_API_USER_ID = 'your-user-id'

HCTI_API_KEY = 'your-api-key'


data = { 'html': "<div class='box'>Hello, world!</div>",

         'css': ".box { color: white; background-color: #0f79b9; padding: 10px; font-family: Roboto }",

         'google_fonts': "Roboto" }


image = requests.post(url = HCTI_API_ENDPOINT, data = data, auth=(HCTI_API_USER_ID, HCTI_API_KEY))


print("Your image URL is: %s"%image.json()['url'])

# https://hcti.io/v1/image/7ed741b8-f012-431e-8282-7eedb9910b32


查看完整回答
反对 回复 2022-08-25
?
杨魅力

TA贡献1811条经验 获得超6个赞

如果你不希望你的项目依赖于wkhtmltopdf,就像其他Python模块使用的那样,我推荐html2image。


您可以使用该命令获取它。您的计算机上还应安装Web浏览器(目前为Chrome/Chromium)。pip install html2image


安装后,您可以截取HTML字符串的屏幕截图,如下所示:


from html2image import Html2Image

hti = Html2Image()


html = '<h1> A title </h1> Some text.'

css = 'body {background: red;}'


# screenshot an HTML string (css is optional)

hti.screenshot(html_str=html, css_str=css, save_as='page.png')

您还可以直接截取现有 HTML 文件或 URL 的屏幕截图:


# screenshot an HTML file

hti.screenshot(

    html_file='page.html', css_file='style.css', save_as='page2.png'

)


# screenshot an URL

hti.screenshot(url='https://www.python.org', save_as='python_org.png')

有关文档和更多示例,可以查看项目的 GitHub 页面。


查看完整回答
反对 回复 2022-08-25
?
守候你守候我

TA贡献1802条经验 获得超10个赞

渲染HTML网站的另一个非常有用的工具是无头Chromium浏览器。


在javascript中,你会使用puppeteer api与它进行交互,但是有一个非官方的poppeteer python移植,叫做pyppeteer。


根据我对imgkit等python工具的经验,Chromium解决方案在加载图像或iFrame等外部资产时要可靠得多。


要使用pyppeteer获取呈现的HTML的图像版本,您只需加载页面,然后制作整页屏幕截图:


import asyncio

from pyppeteer import launch


async def main():

    browser = await launch()

    page = await browser.newPage()

    await page.goto('http://example.com')

    await page.screenshot({'path': 'example.png', 'fullPage': 'true'})

    await browser.close()


asyncio.get_event_loop().run_until_complete(main())


查看完整回答
反对 回复 2022-08-25
?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

from html2image import Html2Image

hti = Html2Image()

with open('./test.html') as f:

    hti.screenshot(f.read(), save_as='out.png')


查看完整回答
反对 回复 2022-08-25
  • 4 回答
  • 0 关注
  • 214 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信