php - 在没有客户端浏览器的情况下将 HTML Canvas 保存为图像

标签 php javascript html canvas webpage-screenshot

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

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

呈现缩略图并将其发送回服务器的 AJAX 解决方案将无法工作,因为在第一个人查看页面之前我需要缩略图。它还需要快(希望只比 Canvas 渲染时间稍长,3 秒)。我等不及像浏览器截图这样的外部服务了。

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

最佳答案

您可能想看看 Phantomjs: https://github.com/ariya/phantomjs/wiki/Screen-Capture

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

关于php - 在没有客户端浏览器的情况下将 HTML Canvas 保存为图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16063891/

相关文章:

php - PHP 7.0.11 中的 BUG,FILTER_FLAG_NO_RES_RANGE

php向表中插入空白数据

javascript - 每 10 秒执行一次 SVG html 代码

html - 最大宽度和最小宽度缩放,这可能吗?

php - 使用 ZEND 服务器在 PHP 中将 PDF 转换为 JPEG

php - 读取远程目录的选项

javascript - 使用 jQuery 从右向左滑动 DIV

javascript - 消息 : SyntaxError: missing : after property id

html - 如何使文本字段的边框缩放以适应 CSS 中文本字段的大小

html - 使用 Karma 生成 HTML 测试报告