javascript - 来自 getImageData 的 RGB 值未定义

标签 javascript html canvas getimagedata

我想点击一张图片并获取该像素的 RGB 值。

这是我的代码:

<html>
<body>
<canvas id="kartina" width="500" height="500"></canvas>
<form>
<input type="text" id="textField" size="80">
</form>

</body>
<script>
var canvas=document.getElementById("kartina");
var ctx=canvas.getContext("2d");
var textField=document.getElementById("textField");
canvas.addEventListener('click',function(event){
    var x=event.pageX;
    var y=event.pageY;
    var p=ctx.getImageData(x,y,1,1);
    textField.value="x: "+x+", y: "+y+", R: "+p[0]+", G: "+p[1]+", B: "+p[2];
});


var img=new Image();
img.onload=function(){
ctx.drawImage(img,0,0);
};
img.src="/myApp/pic.jpg";


</script>
</html>

当我点击图像时,文本框会正确填充坐标,但所有 RGB 值都是“未定义”的,例如:

x: 157, y: 89, R: undefined, G: undefined, B: undefined

如何获得正确的 RGB 值?

最佳答案

getImageData返回 ImageData对象,其 data 属性是包含实际 RGB 值的数组。

基本上,您缺少一个 .data:

var p = ctx.getImageData(x,y,1,1).data;

关于javascript - 来自 getImageData 的 RGB 值未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28533612/

相关文章:

javascript - 输入文件在 ReactJS 上的悬停效果

javascript - 在页面顶部创建 Canvas

javascript - Fabric js 绘制具有事件形状的多边形

javascript - 选择日期选择器的父元素

javascript - ng-template 不在 jsFiddle 中显示 View

java - 如何用Java与网页交互?

javascript - 从同一个 onclick 调用两个函数

JavaScript/HTML5 - 获取 Canvas 对象文本?

javascript - 从要在 D3 中使用的 JSON 文件访问 ids

javascript - 如何循环多个 jQuery 函数