我试图找到特定像素的颜色,并根据HTML5和JavaScript中像素的颜色来改变h1中的文本和文本的颜色。我有问题像素的坐标,图像来自一个URL。我已经有了CSS类的颜色,我希望它改变它。
坐标是315 189
我试着使用我在不同网站上找到的代码,但它从来没有解释如何做任何事情,只是给出代码,所以它从来没有工作。
function getPixel(url, x, y) {
var img = new Image();
img.src = //this is where the url goes;
var canvas = document.createElement('canvas');
var context = canvas.getContext('2d');
context.drawImage(img, 0, 0);
return context.getImageData(x, y, 1, 1).data;
}
1条答案
按热度按时间voase2hg1#
您提供的代码基本上是正确的,将检索像素的颜色值,但它有一些问题。让我先解释一下你的代码。
代码首先创建一个
Image
对象,并将其存储在img
变量中。在下一行中,我们提供了图像的源代码。然后,我们创建一个画布对象,允许您渲染图形。下一行是我们检索canvas.getContext('2d');
的地方,表明我们使用的是二维图像。最后,我们在0,0位置绘制图像,然后使用getImageData
检索特定像素的rgba
值。如果没有解释,代码将不能直接在html文档中工作。它必须由某种元素触发。我能够使用提供的大部分代码,并让它在我的本地系统上运行。我使用镜像的
.onload
事件触发了代码:在这段代码中,我决定用与图像相同的尺寸来定义画布的宽度和高度,以便可以完全渲染它。另外,如果您注意到,
getImageData
方法的data属性返回一个rgba
值数组。最后,我使用这些值重新定义<h1>
标签的颜色。此外,如果您在选择某个像素值来获取其颜色时遇到困难,您可以将pixelate effect添加到Cloudinary或任何其他媒体转换平台的图像中,以放大每个像素。