如何像Google+一样进行页面截图


How to take page screenshots like Google+

在使用Google+的反馈后,我注意到它可以截图,还允许你做一些事情,比如高亮和黑色部分。我想知道这是如何实现的;基于这样的事实,你可以修改DOM与高光和黑色,我认为它只是采取整个DOM,并把它变成一个图像,然而,我不确定他们是如何做到这一点。

我知道PHP有几个函数,'imagegrabscreen'和'imagegrabwindow',但它们只适用于Windows用户,所以我怀疑这是他们正在使用的。

所以,我的问题是他们如何把DOM变成一个图像?

Google+并不完全在客户端截图。它将本地(渲染)DOM发送到服务器,将其渲染为图像,并返回创建的图像。

您可以通过向页面添加本地图像(使用Firebug)来测试这一点,然后尝试创建一个反馈。该图像将不存在

JavaScript可以读取DOM并使用canvas呈现相当准确的表示。我一直致力于将html转换为画布图像的脚本。今天决定像你描述的那样把它实现成发送反馈。

脚本允许您创建反馈表单,其中包括在客户端浏览器上创建的屏幕截图,以及表单。该截图是基于DOM的,因此可能不是100%准确的真实表示,因为它没有制作实际的截图,而是根据页面上可用的信息构建截图。

不需要服务器的任何渲染,因为整个图像是在客户端浏览器上创建的。HTML2Canvas脚本本身仍然处于非常实验性的状态,因为它没有解析我想要的CSS3属性,也没有任何支持加载CORS图像,即使代理可用。

浏览器兼容性仍然很有限(不是因为不支持更多,只是没有时间让它更跨浏览器支持)。

有关更多信息,请查看这里的示例:

http://hertzen.com/experiments/jsfeedback/

我的猜测是他们收集有关问题页面的信息,突出显示块等,在web浏览器的内存版本中呈现该页面并截取它的屏幕截图。

编辑方式:

如果客户端正在查看http://some.page?someArg = someValue

服务器呈现http://some.page?someArg=someValue在内存浏览器中截取截图,将图像发送给客户端