【问题标题】:Save canvas as png locally with javascript with Cross doimain使用跨域的javascript在本地将画布保存为png
【发布时间】:2019-01-01 03:45:31
【问题描述】:

我想保存画布标签的图像,但是当我尝试从画布创建图像时,它告诉我“SecurityError:操作不安全”,我认为这是来自另一个域的画布问题我上线了。此画布是使用 openlayers3 生成的地图。

var canvas = document.getElementsByClassName('ol-unselectable')[0];
var dataURL = canvas.toDataURL('image/png');
var window = window.open();
window.document.write('<img src='+dataURL+'/>');

我也试过了

canvas.toBlob(function(blob) {
saveAs(blob, 'map.png')
}

是否有一个简单的解决方法可以使画布不被污染?

【问题讨论】:

标签: javascript html cross-domain openlayers-3


【解决方案1】:

您尝试从另一个窗口在新的浏览器窗口中写入,如果没有 https 协议或 localhost,这是不可能的。但是您可以在当前窗口中创建新的 img。

var canvas = document.getElementsByClassName('ol-unselectable')[0];
var dataURL = canvas.toDataURL('image/png');
var img = new Image();
img.width = 1000;
img.height = 1000;
img.src = dataURL;
img.onload = function () {
  document.body.append(img);
}

【讨论】:

  • 无法运行var dataURL = canvas.toDataURL('image/png') 因为画布被污染了
  • 尝试在var canvas = document.getElementById('canvas_id');上交换var canvas = document.getElementsByClassName('ol-unselectable')[0];
  • canvas标签由openlayers 3生成。
猜你喜欢
  • 1970-01-01
  • 2012-07-30
  • 1970-01-01
  • 2012-06-27
  • 2014-02-20
  • 2013-07-18
  • 1970-01-01
  • 2016-03-01
  • 2011-09-19
相关资源
最近更新 更多