在 Python 中将 HTML 字符串转换为图像 [关闭]

Posted

技术标签:

【中文标题】在 Python 中将 HTML 字符串转换为图像 [关闭]【英文标题】:Convert HTML string to an image in Python [closed] 【发布时间】:2011-08-03 18:42:11 【问题描述】:

我想在 Python 中将以下 html 转换为 PNG 图像。

<html>
    <b>Bold text</b>
</html>

这个 HTML 当然是一个例子。

我尝试过“pisa”,但它会将 html 转换为 PDF,而不是图像。 我可以将 HTML 转换为 PDF,然后将 PDF 转换为 PNG,但我想知道是否有任何直接的解决方案(即 HTML 到 PNG)。任何内置或外部模块都可以很好地工作。

如果这可以在 Graphicsmagick 或 Imagemagick 中完成,那就完美了。

【问题讨论】:

Html to image in javascript or python 的可能重复项 @ZsoltBotykai 在现已删除的答案中建议也可以查看:Python - render HTML content to GIF image 【参考方案1】:

webkit2png. 原始版本仅适用于 OSX,但幸运的是有一个跨平台分支: https://github.com/AdamN/python-webkit2png

【讨论】:

这是怎么用的? @Newskooler 一开始我也很困惑(因为 pip 安装对我不起作用)所以我写了一个more elaborate answer。希望对你有帮助 只是在这里提供一个替代方案imgkit 使用 wkhtmltopdf(link to sample code 使用 ubuntu 测试:))。【参考方案2】:

要扩展 vartec 的答案以解释如何使用它...

安装webkit2png 最简单的方法可能是简单地克隆 github repo 并运行设置。

mkdir python-webkit2png
git clone https://github.com/adamn/python-webkit2png.git python-webkit2png
python setup.py install

这需要已经安装了 python 和 git。 对于 cygwin,这会将 webkit2png 作为命令添加到路径中。我还没有为其他终端/操作系统测试过这个。

运行它 假设您在当前目录中有您的网站。 (我有一个使用 css 样式表的 html 文件 - 但没有必要考虑 css 文件。)

webkit2png something.html -o something.png

选项webkit2png -h 通知我们:

Options:
  --version             show program's version number and exit
  -h, --help            show this help message and exit
  -x WIDTH HEIGHT, --xvfb=WIDTH HEIGHT
                        Start an 'xvfb' instance with the given desktop size.
  -g WIDTH HEIGHT, --geometry=WIDTH HEIGHT
                        Geometry of the virtual browser window (0 means
                        'autodetect') [default: (0, 0)].
  -o FILE, --output=FILE
                        Write output to FILE instead of STDOUT.
  -f FORMAT, --format=FORMAT
                        Output image format [default: png]
  --scale=WIDTH HEIGHT  Scale the image to this size
  --aspect-ratio=RATIO  One of 'ignore', 'keep', 'crop' or 'expand' [default:
                        none]
  -F FEATURE, --feature=FEATURE
                        Enable additional Webkit features ('javascript',
                        'plugins')
  -c COOKIE, --cookie=COOKIE
                        Add this cookie. Use multiple times for more cookies.
                        Specification is value of a Set-Cookie HTTP response
                        header.
  -w SECONDS, --wait=SECONDS
                        Time to wait after loading before the screenshot is
                        taken [default: 0]
  -t SECONDS, --timeout=SECONDS
                        Time before the request will be canceled [default: 0]
  -W, --window          Grab whole window instead of frame (may be required
                        for plugins)
  -T, --transparent     Render output on a transparent background (Be sure to
                        have a transparent background defined in the html)
  --style=STYLE         Change the Qt look and feel to STYLE (e.G. 'windows').
  --encoded-url         Treat URL as url-encoded
  -d DISPLAY, --display=DISPLAY
                        Connect to X server at DISPLAY.
  --debug               Show debugging information.
  --log=LOGFILE         Select the log output file

值得注意的选项是宽度和高度的设置。

疑难解答 使用cygwin,我遇到了webkit2png: cannot connect to X server :0.0。 为了解决这个问题(我已经执行了export DISPLAY=0.0),我必须启动一个 X-Server。在 cygwin 上,这可以通过在第二个终端中运行 startxwin 来完成。确保首先通过 cygwin 安装程序安装它。

【讨论】:

我已按照步骤操作,但遇到了一些导入问题。我导入了所需的文件,但我不知道如何安装此模块 - ImportError: No module named QtWebKit 我导入了 sudo apt install python-pyqt5.qtwebkit 但仍然遇到导入问题。 我刚刚按照给定的步骤操作,我只是遇到了导入问题。我正在使用 ubuntu 18 一开始没有看到你的编辑,所以我再次删除了我的评论。我不记得必须安装 QtWebKit,所以我可能帮不上什么忙。如果您没有找到特定于您的问题的问题,请考虑提出一个问题。 @Javed maybe this helps 谢谢,但我尝试了上面链接中给出的步骤,但没有任何效果。

以上是关于在 Python 中将 HTML 字符串转换为图像 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 3.9.6 中将 b 字符串转换为 png

如何在 Python 中将 RGB 图像转换为灰度图像?

在 Python 中将 XML/HTML 实体转换为 Unicode 字符串 [重复]

在 Python 中将 XML/HTML 实体转换为 Unicode 字符串 [重复]

在python中将二进制转换为字符串

在python中将png图像转换为一个pdf