如何将 html 转换为 base64 并使用 php 将图像保存在服务器上?

How to convert html to base64 and save an image on a server with php?

我有一个这样的 json 文件:

{"user":{"email":"user@test.com"},
 "screenshot":{"blobFile":"<!DOCTYPE html><html lang=\"en\">...</html>"}}

我想截图,使用 XMLHttpRequest 发送数据 PHP 文件。

在 PHP 文件中获取如下请求:

$data = json_decode(file_get_contents("php://input"), true);
$htmlStr = json_encode($data["screenshot"]["blobFile"]); // <!DOCTYPE html><html lang=\"en\">...

到目前为止一切正常,但如何将此字符串转换为图像文件并保存服务器?

我已经在 PHP 文件中尝试 html2canvas 但没有成功。

有什么想法吗?

我会尝试使用 PhantomJS。它是无头浏览器,允许以多种方式与网页交互,包括制作屏幕截图。了解如何使用它需要一些时间,但肯定会得到结果。虽然,如果您的页面结构非常复杂,使用 ReactJS、AngularJS 等框架编写,PhantomJS 有时会令人头疼

它的作用 它呈现 HTML 带有样式的页面,包括服务器端的脚本。如果您保存的不是 HTML 字符串,而是精确 URL 的 COOKIE 和 SESSION 数据,然后在您截取屏幕截图时重建用户在打开的页面中的条件,它就可以完成工作。

请参阅此处示例 Screen Capture on PhantomJS