Php 将HTML画布另存为不带客户端浏览器的图像

Php 将HTML画布另存为不带客户端浏览器的图像,php,javascript,html,canvas,webpage-screenshot,Php,Javascript,Html,Canvas,Webpage Screenshot,加载页面时(无需用户交互),我会在几个重叠的画布上生成一个图像,但这确实需要约3秒钟才能完全绘制。我想展平这些画布,并在服务器上将此图像转换为PNG,以便在缩略图预览中使用 将其展平到单个画布(使用ctx.drawImage(other_canvas,0,0)),然后使用ctx.toDataUrl()看起来正是我所需要的。有没有一种方法可以在服务器端执行此操作而不需要用户的浏览器?可能是某种命令行javascript/canvas解析器,它可以加载页面,等待画布完成渲染,然后注入一些javasc

加载页面时(无需用户交互),我会在几个重叠的画布上生成一个图像,但这确实需要约3秒钟才能完全绘制。我想展平这些画布,并在服务器上将此图像转换为PNG,以便在缩略图预览中使用

将其展平到单个画布(使用ctx.drawImage(other_canvas,0,0)),然后使用ctx.toDataUrl()看起来正是我所需要的。有没有一种方法可以在服务器端执行此操作而不需要用户的浏览器?可能是某种命令行javascript/canvas解析器,它可以加载页面,等待画布完成渲染,然后注入一些javascript进行展平、调用toDataUrl、调整大小并保存结果图像

呈现缩略图并将其发送回服务器的AJAX解决方案不起作用,因为在第一个人查看页面之前,我需要缩略图。它还需要快速(希望只比画布渲染所需的时间略长,3秒)。我迫不及待地等待像browsershots这样的外部服务

我看了CutyCapt,但它呈现了整个网页,而不仅仅是画布(出于某种原因,似乎也没有在画布上绘制所有内容)


谢谢。

PHP具有用于服务器端图像生成的功能,提供类似于HTML5画布的功能。

查看PhantomJS,它是webkit浏览器的命令行版本,您可以做一些很酷的事情,例如将渲染页面的输出保存在图像中等。另外,您还可以插入javascript代码,以提供您可以更好地控制何时使用它拍摄屏幕截图


您可能想看看Phantomjs:


这在将html内容呈现为PNG方面做得很好,尽管这也将完成整个页面。也许您可以将感兴趣的画布内容包装在一个单独的页面中,然后使用phantomjs将其转换为png。

我考虑过这一点,但这需要我在PHP中重新实现js代码并维护这两个版本。