js关于getImageData跨域问题的解决方法


Posted in Javascript onOctober 14, 2016

在学习h5的时候,canvas标签中getImageData()报错:security error

具体代码如下(chrome浏览器):

function createGSCanvas(img){
 var canvas=document.createElement("canvas");
 canvas.width=img.width;
 canvas.height=img.height;
 var ctx=canvas.getContext("2d");
 ctx.drawImage(img,0,0);

 var c=ctx.getImageData(0,0,img.width,img.height);
 for(var i=0;i<c.height;i++){
  for(var j=0;j<c.width;j++){
   var x=(i*4)*c.height+(j*4);
   var r=c.data[x];
   var g=c.data[x+1];
   var b=c.data[x+2];
   c.data[x]=c.data[x+1]=c.data[x+2]=(r+g+b)/3;

  }
 }
 ctx.putImageData(c,0,0,0,0,c.width,c.height);
 return canvas.toDataURL();
}

报错信息如下:Uncaught SecurityError: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The canvas has been tainted by cross-origin data.

原因:createGSCanvas()调用了getImageData函数,但是图片存储在本地文件,默认为没有域名,chrome浏览器判定为跨域才报错!

解决方法:1、将图片放置在服务器中,由服务器返回给客户端浏览器,遵循同源策略;

                    2、在IE、Firefox浏览器中打开。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js静态作用域的功能。
Dec 25 Javascript
JS在IE和FireFox之间常用函数的区别小结
Mar 12 Javascript
原生Js页面滚动延迟加载图片实现原理及过程
Jun 24 Javascript
JavaScript中的console.group()函数详细介绍
Dec 29 Javascript
JavaScript动态修改背景颜色的方法
Apr 16 Javascript
JavaScript实现的简单拖拽效果
Jun 01 Javascript
javascript计时器编写过程与实现方法
Feb 29 Javascript
Bootstrap进度条学习使用
Feb 09 Javascript
推荐三款日期选择插件(My97DatePicker、jquery.datepicker、Mobiscroll)
Apr 21 jQuery
Vue.js 使用v-cloak后仍显示变量的解决方法
Nov 19 Javascript
javascript中的数据类型检测方法详解
Aug 07 Javascript
jQuery冲突问题解决方法
Jan 19 jQuery
AngularJS 与Bootstrap实现表格分页实例代码
Oct 14 #Javascript
深入学习js瀑布流布局
Oct 14 #Javascript
微信小程序 地图定位简单实例
Oct 14 #Javascript
Bootstrap作品展示站点实战项目2
Oct 14 #Javascript
JS控制页面跳转时未请求要跳转的地址怎么回事
Oct 14 #Javascript
js中json处理总结之JSON.parse
Oct 14 #Javascript
Bootstrap优化站点资源、响应式图片、传送带使用详解3
Oct 14 #Javascript
You might like
php下正则来匹配dede模板标签的代码
2010/08/21 PHP
PHP 安全检测代码片段(分享)
2013/07/05 PHP
php表单请求获得数据求和示例
2014/05/15 PHP
php判断目录存在的简单方法
2019/09/26 PHP
实现动画效果核心方式的js代码
2013/09/27 Javascript
js取消单选按钮选中示例代码
2013/11/14 Javascript
javascript中打印当前的时间实现思路及代码
2013/12/18 Javascript
javascript生成json数据简单示例分享
2014/02/14 Javascript
常用DOM整理
2015/06/16 Javascript
js Canvas绘制圆形时钟效果
2017/02/17 Javascript
jQuery简单绑定单个事件的方法示例
2017/06/10 jQuery
Vue组件选项props实例详解
2017/08/18 Javascript
详解使用Next.js构建服务端渲染应用
2018/07/10 Javascript
详解vuex持久化插件解决浏览器刷新数据消失问题
2019/04/15 Javascript
浅析Vue中拆分视图层代码的5点建议
2019/08/15 Javascript
Bootstrap简单实用的表单验证插件BootstrapValidator用法实例详解
2020/03/29 Javascript
JavaScript TAB栏切换效果的示例
2020/11/05 Javascript
如何在JavaScript中使用localStorage详情
2021/02/04 Javascript
[01:07:19]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第一场
2018/04/06 DOTA
在Python中使用异步Socket编程性能测试
2014/06/25 Python
跟老齐学Python之画圈还不简单吗?
2014/09/20 Python
python里使用正则的findall函数的实例详解
2017/10/19 Python
python实现数据库跨服务器迁移
2018/04/12 Python
python爬取盘搜的有效链接实现代码
2019/07/20 Python
python 基于dlib库的人脸检测的实现
2019/11/08 Python
pytorch的梯度计算以及backward方法详解
2020/01/10 Python
Pandas直接读取sql脚本的方法
2021/01/21 Python
Linux文件操作命令都有哪些
2016/07/23 面试题
临床专业自荐信
2014/06/22 职场文书
招标保密承诺书
2015/01/20 职场文书
2016猴年开门红标语口号
2015/12/26 职场文书
python 利用 PIL 将数组值转成图片的实现
2021/04/12 Python
判断Python中的Nonetype类型
2021/05/25 Python
python和C/C++混合编程之使用ctypes调用 C/C++的dll
2022/04/29 Python
Mysql数据库group by原理详解
2022/07/07 MySQL
CentOS7设置ssh服务以及端口修改方式
2022/12/24 Servers