如何获取网页中跨域图片的截图?

How to get screenshot of cross domain images in a webpage?

我正在使用 html2canvas.js 直接在用户浏览器上获取 "screenshots" 网页。但我发现它没有获取使用跨域引用的图像。 另外,我也无法在服务器上设置跨域权限。

那么我该如何完成呢?

html2canvas 团队没有很好的文档。因此,我必须做大量的研发工作才能找到这个解决方案,因此,为了其他人的利益,我在这里分享这些细节。

  1. 插件接受一个参数作为对象,它希望该对象具有 属性 "proxy"。您需要在此处指定代理服务's/module的名称(带相对路径)。

  2. 插件使用这个值形成一个 URL 像:https://your.domain.com/yourPath/yourProxyService?url=https%3A%2F%2Fcrossdomain.com%2FImage.png&callback=html2canvas_0

  3. 当插件尝试使用新创建的 URL 访问此代理时,它需要具有 JSONP 格式图像的 base 64 值的数据。例如见下:

    html2canvas_0("data:image/png;base64,R0lGODlhQAAwAMQAAKioqICAgLKysm1tbWNjY8bGxpSUlHd3d9nZ2ePj48/Pz7y8vJ6enoqKillZWY6Nje3t7Q")

注意:html2canvas_0是URL

中“callback”参数的值