如何摆脱脏乱的画布?

时间:2018-08-24 06:31:27

标签: codeigniter google-app-engine canvas cross-domain html2canvas

好的,所以我有一个codeigniter应用程序。现在在page1上,我有一个ajax,它从page2获取一个充满google云端cdn图像的html内容,然后将内容附加到div。我正在使用html2canvas将该div内容获取到page1上的画布。现在很明显,此时第1页上的画布已被污染。我的问题是如何使toDataUrl工作!需要一个画布。

这是我到目前为止尝试过的:

  1. 已使用html2canvas这样添加了一个代理(都是php n js)..它帮助我摆脱了html2canvas无法从CDN加载图像的问题-

    html2canvas(div_content,{
                proxy: "proxy.js",
                useCORS: true,allowTaint: true}).then(function(canvas) { 
                                                  var img=canvas.toDataurl(); 
                                                      });
    
  2. 试图在以下两种同时为page1和page2提供服务的控制器构造函数上添加跨域标头,但无效。

    I。 header("Access-Control-Allow-Methods: GET, OPTIONS"); header("Access-Control-Allow-Headers: Content-Type, Content-Length, Accept-Encoding");

    II。 $this->output->set_header('Access-Control-Allow-Origin: *');

P.S:不要提供将图像下载到本地存储中并在第2页上使用它们的解决方案,因为我正在使用Google App Engine标准,并且只能在存储桶中写入/存储文件!

1 个答案:

答案 0 :(得分:0)

由于时间不足,我不得不实施一个显而易见的快速解决方案。由于使用js加载后没有为所有图像元素将cross-origin设置为anonymous的奢侈,所以我没有将其全部转换为{{1 }}编码的数据网址。如果有人可以提供经过测试的解决方案,请稍后再做。但是,如果有人着急,那么这是一个快速的解决方案。

base64

P.S:我所有的图像都是png