画布到图像无法执行' toDataURL' on' HTMLCanvasElement':可能无法导出受污染的画布

时间:2016-01-03 06:58:43

标签: javascript angularjs html5 facebook canvas

我正在使用 $ scope.picture.picture.data.url 从facebook api获取一张图片,它正确地将其渲染为画布,但是当我想将其更改为 dataUrl 它让我犯了这个错误

  

画布到图像无法执行' toDataURL' on' HTMLCanvasElement':可能无法导出受污染的画布。

画布像这样呈现

 var canv=document.getElementById("mainCanvasD");
       var ctx = canv.getContext('2d');

       ctx.clearRect(0,0,540,320);
       // $scope.picture used here
       // draw games background image here 
       // console.log($scope.picture.picture.data.url);

       drawUrlImage($scope.picture.picture.data.url,10,130,180,180,"mainCanvasD");
       drawUrlImage("http://localhost/ezone/public/game/"+$scope.gameName+"/right/"+generateRandom(6)+".jpg",240,130,180,180,"mainCanvasD");

并使用此代码将其命名为dataUrl

 var canv=document.getElementById("mainCanvasD");

   var dataURL = canv.toDataURL('image/jpg');
   documentData={"image":dataURL,"gameName":$scope.gameName,"userId":$scope.userId,"gameId":$scope.gameId};

1 个答案:

答案 0 :(得分:4)

出于安全原因,如果您在域外绘制一些内容,则无法访问画布的内容,在这种情况下是来自Facebook的图像。 在这种情况下,画布变得有污点。您仍然可以绘制其他内容,用户可以看到它,但不允许以编程方式阅读它。