- 36
- 0
问题描述
利用canvas改变图片的颜色, 谷歌运行正常, 火狐报错
IndexSizeError: Index or size is negative or greater than the allowed amount
问题出现的环境背景及自己尝试过哪些方法
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
revertColor(type) {
let config = {
attention: {
url: this.local.myAttention.map(it => it.dataIconUrl),
className: '.myAttention-icon',
size: 32,
padding: 4
},
dataProduct: {
url: this.local.dataProductList.map(it => it.productIcon),
className: '.dataProduct-icon',
size: 45.6,
padding: 0
}
};
let {url, className, size, padding} = config[type];
size = Math.floor(size)
url = url.slice(0, 8);
(Array.from($(className)) || []).forEach((node, idx) => {
let canvas = node.getContext('2d');
let img = new Image();
img.src = url[idx];
img.onload = function () {
canvas.drawImage(img, padding, padding, size, size);
let imgData = canvas.getImageData(padding, padding, img.width, img.height) || {};
let colorData = imgData.data;
for (let i = 0; i < colorData.length; i += 4) {
if (!(colorData[i] === 75 && colorData[i + 1] === 164 && colorData[i + 2] === 190)) {
// 将除底色以外的所有颜色重置
colorData[i] = 255;
colorData[i + 1] = 255;
colorData[i + 2] = 255;
}
}
canvas.clearRect(0, 0, $(className).width(), $(className).height());
canvas.putImageData(imgData, padding, padding);
}
});
}
你期待的结果是什么?实际看到的错误信息又是什么?
火狐浏览器发现图片根本没有被绘制上去, 应该是drawImage的时候就已经出问题了
2
打赏
收藏
点击回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

