【发布时间】:2011-09-10 18:48:58
【问题描述】:
我在画布中放置了一个图像,当用户将鼠标移到图像上时,我想获取该图像像素的 RGB 值。这是我写的代码:
<canvas id="myCanvas" width="200" height="200" style="border: red;border-style: dotted">
Your browser does not support the canvas element.
</canvas>
<script>
var canvas = document.getElementById("myCanvas");
var context = canvas.getContext("2d");
var destX = 0;
var destY = 0;
var imageObj = new Image();
imageObj.onload = function()
{
context.drawImage(imageObj, destX, destY);
};
imageObj.src = "zain.jpg";
canvas.onclick = function(e) {
var x = e.pageX;
var y = e.pageY;
var canvasColor = context.getImageData(x, y, 1,1); // rgba e [0,255]
var pixels = canvasColor.data;
var r = pixels[0];
var g = pixels[1];
var b = pixels[2];
document.body.style.backgroundColor = "rgb("+r+','+g+','+b+")";
}
【问题讨论】:
-
两个关于您当前代码的快速方法。 1. 确保 getImageData w 和 h 设置为 1 (getImageData(x, y, 1, 1)。2. 像这样设置 CSS "rgb("+r+","+g+","+b+")" ; . 您需要像这样格式化输出以匹配规范。
-
@bebraw 我已经更新了代码,但仍然没有发生任何事情,我的代码在 getImageData() 函数调用之后没有立即执行。你能帮我一个忙,你复制我的代码并在你最后运行它。会非常感谢你!
-
您的代码似乎在这里工作。不过,有一件重要的事情要记住!您将需要在本地服务器上运行脚本。否则 getImageData 会给你 SECURITY_ERR (检查你的控制台)。
-
我在本地机器上运行它,但我不知道为什么我的代码在 getImageData() 调用后没有立即执行。 :(
-
是的,你是对的,它在 getImageData() 函数调用之后立即给出安全错误,你能建议我,如何处理它?
标签: javascript html canvas html5-canvas