当我尝试通过 getImageData 方法获取图像的像素时,出现此错误
“无法从画布获取图像数据,因为画布已被跨域数据污染。未捕获的错误:SecurityError:DOM Exception 18”
图像在标头响应中有Access-Control-Allow-Origin: *。所以,我不明白为什么会出现这个错误。我必须做些什么来解决这个问题?
我尝试将属性 crossOrigin 添加到图像中,但这在 Safari 中不起作用。我正在处理的代码如下。
<html>
<head>
<title>Example</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script type="text/javascript">
var img = new Image();
img.onload = function() {
var ctx = $('#cnv')[0].getContext('2d');
ctx.drawImage(this, 0, 0);
var originalImageData = ctx.getImageData(0, 0, 300, 300); // Exception 18
};
img.src = 'http://api.thumbr.it/1f86404a001828912f295a74b8a4d337/D-lvXHFIHpY/api.thumbr.it/static/ladies-800.png/400x400c-ebrown-eframe1/thumb.jpg';
$('body').append(img);
</script>
</head>
<body>
<h1>Example</h1>
<img class="image" id="img-rara" src="http://api.thumbr.it/f4414f15f6d6d2639a17c6e1c025d970/D-lvXHFIHpY/api.thumbr.it/static/ladies-800.png/400x400c-ebarcelona-eframe1/thumb.jpg" />
<canvas id="cnv" width="711" height="400" />
</body>
</html>