一、问题:在使用html5的canvas是,当用到getImageData方法获取图片信息时,会碰到跨域无法获取的情况,代码如下:

document.getElementById("pic").onload=function(){
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
var img=document.getElementById("pic");
ctx.drawImage(img,0,0,300,300);
var imgData=ctx.getImageData(0,0,c.width,c.height); //问题所在
// 反转颜色
for (var i=0;i<imgData.data.length;i+=4)
{
imgData.data[i]=255-imgData.data[i];
imgData.data[i+1]=255-imgData.data[i+1];
imgData.data[i+2]=255-imgData.data[i+2];
imgData.data[i+3]=255;
}
ctx.putImageData(imgData,0,0);
};

在chrome会提示:

"Uncaught DOMException: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The canvas has been tainted by cross-origin data.
at HTMLImageElement.document.getElementById.onload"的错误信息

在IE中会提示:

"security error!"的错误信息

二、原因:图片存储在本地时,是默认没有域名的,用getImageData方法时,浏览器会判定为跨域而报错!

三、方法:1.把图片放置在服务器中,通过服务器返回给客户端,遵循同源策略;

2.用firefox浏览器打开;

在firefox中效果如下:

最新文章

  1. web设计中那些因素可能影响网站后期优化
  2. (lleetcode)Single Number
  3. 【读书笔记《Android游戏编程之从零开始》】1.Android 平台简介与环境搭建
  4. 获取元素CSS值之getComputedStyle方法熟悉
  5. 搬瓦工的ShadowSock设置方法:
  6. 完美解决移动Web小于12px文字居中的问题
  7. poj 1125 Stockbroker Grapevine(最短路 简单 floyd)
  8. Maven的安装与使用(ubuntu)
  9. Spark性能调优之代码方面的优化
  10. Android动画(一)-视图动画与帧动画
  11. WinForms 快速开发的工具类。
  12. js回调函数以及同步与异步
  13. kmeans聚类理论篇
  14. http基本get和post请求
  15. Emit学习笔记
  16. iOS开发-NSUndoManager撤销(undo)和重做(redo)
  17. elasticsearch 导入基础数据并索引之 geo_point
  18. Java学习之路(八):Set
  19. 小白学习之Code First(三)
  20. Java文件写入时是否覆盖

热门文章

  1. ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository
  2. 【python】属性
  3. CSS巧妙实现分隔线的几种方法
  4. DateTime 详解
  5. Linux下memcache的安装
  6. Win10/UWP开发—凭据保险箱PasswordVault
  7. android view : 自定义
  8. Python 基础之在ubuntu系统下安装双版本python
  9. 安装go语言,配置环境及IDE,只需3步
  10. C#串口通讯实例