跨域图片在canvas中绘制出现问题,怎能解决

代码是:

var img2 = new Image,
    canvas = document.createElement("canvas"),
    ctx = canvas.getContext("2d");
    img2.src = src;

    img2.crossOrigin = "Anonymous";

    img2.onload = function() {
         canvas.width = img2.width;
         canvas.height = img2.height;
         ctx.drawImage( img2, 0, 0 );
         console.log(canvas.toDataURL("image/png"));
    }

错误内容是

Uncaught SecurityError: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.
阅读 10.9k
6 个回答

canvas使用加载跨域图片的img,除了要设置的crossOrigin属性。
还要看该跨域图片所在的服务器是否允许跨域访问。
所以,你这个明显是要加载图片的服务器不允许跨域。


在服务器上相应头里:设置Access-Control-Allow-Origin为 * ,就可以允许跨域。

base64图片可以jsonp过来;
早年一个项目用过;

可能无法解决吧。我尝试了很多办法都不行。有会的吗?

放到本地服务器里

用jsonp的形式可以解决跨域问题的

新手上路,请多包涵

如果图片的服务器不允许跨域访问是无解的。
如果你可以读到图片的二进制文件的话,可以试试把二进制文件直接丢到canvas里

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题