一、问题:在使用html5的canvas是,当用到getImageData方法获取图片信息时,会碰到跨域无法获取的情况,代码如下:
<script type="text/javascript">
var video = document.getElementById('v_player');
var canvas1 = document.getElementById('v_player1');
var context1 = canvas1.getContext('2d');
function animate() {
if(!video.ended) {
context1.drawImage(video, 0, 0, canvas1.width, canvas1.height);
/*
浏览器直接访问时出现 getImageData()方法报错
报错信息:Uncaught DOMException: Failed to execute 'getImageData' on 'CanvasRenderingcontextD': The
canvas has been tainted by cross-origin data.
原因:图片存储在本地时,是默认没有域名的,用getImageData方法时,浏览器会判定为跨域而报错!
解决方法:1.把静态资源放置在服务器中,通过服务器返回给客户端,遵循同源策略;*/
var imgdata = context1.getImageData(0, 0, canvas1.width, canvas1.height);
var data = imgdata.data;
for(var i = 0, n = data.length; i < n; i += 4) {
var average = (data[i] + data[i + 1] + data[i + 2]) / 3;
data[i] = average;