Javascript getImageData.data在IE11中未定义
我使用以下函数获取单击坐标的像素数据:Javascript getImageData.data在IE11中未定义,javascript,html,canvas,Javascript,Html,Canvas,我使用以下函数获取单击坐标的像素数据: Utils.GetPixel = function(imgData, index) { var i = index*4, d = imgData.data; return [d[i], d[i+1], d[i+2], d[i+3]]; }; Utils.GetPixelXY = function(gObj, x, y) { return Utils.GetPixel(gObj.ImgData, y*gObj.ImgData.wid
Utils.GetPixel = function(imgData, index)
{
var i = index*4, d = imgData.data;
return [d[i], d[i+1], d[i+2], d[i+3]];
};
Utils.GetPixelXY = function(gObj, x, y)
{
return Utils.GetPixel(gObj.ImgData, y*gObj.ImgData.width+x);
};
在Chrome/Firefox/Edge中打印一些测试数据很好,但在IE11中不行,我对这一点很陌生,所以我有点困惑
var p = Utils.GetPixelXY(gObj, (mx - gObj.X), (my - gObj.Y));
console.log(p[0]+" "+p[1]+" "+p[2]+" "+p[3]);
Chrome/Firefox/Edge:255 0 255
IE11:未定义未定义
更新:
我已经准备好了一个小提琴重奏,很抱歉我花了这么长时间才回到这里
经过一番周折后,我发现了一些奇怪的地方,画布上看似单一的像素返回rgba像素数据,如下所示:
经过几个小时的混乱、阅读和测试,我发现我必须
parseInt()来确保x和y值是整数,因为Internet Explorer 10和更高版本以浮点形式返回鼠标坐标以表示分数像素
以下是工作示例:
我真的很惊讶stackoverflow上没有人指出这一点,我花了这么长时间才找到答案,我想很多人都会犯这个错误。在你的对象
gObj
中如何创建ImgData
?据介绍,中不支持ImageData()构造函数IE@both_previous_commenter,如果OP使用的是空的ImageData(通过ImageData
构造函数,或通过ctx.createImageData
,他将不会有红色像素([255,0,0255]
)你的画布上画了什么?你能提供一个活生生的例子吗?@kaido你能描述一下你的意思吗?它在我的IE11中工作。RGBA值仅在图像区域可用。其他画布区域仅显示未定义,即使在Chrome中也是如此。