如何从HTML页面的顶层元素中获取特定像素的颜色?

f45qwnt8  于 2023-03-21  发布在  其他
关注(0)|答案(1)|浏览(120)

我想做与canvasContext.getImageData(X,Y,1,1)相同的事情,但是对于整个文档(而不是画布),从文档最上面的可见元素中的特定像素获取颜色。
我尝试在控制台上执行document.getImageData(1,1,1,1)以获取文档左上角像素的颜色,但结果是错误Uncaught TypeError: document.getImageData is not a function。我也尝试在窗口window.getImageData(1,1,1,1)上执行相同的操作,但结果是类似的错误Uncaught TypeError: window.getImageData is not a function
因此,我无法使用getImageData(X,Y,1,1)从文档上的特定像素获取颜色。
有人知道如何从文档的像素中获取颜色吗?最好不要使用JQuery。
谢谢

7uhlpewt

7uhlpewt1#

我不相信有一种方法可以直接获得文档的第一个像素,getImageData方法在画布上下文上工作,所以不能在文档或窗口对象上使用。
一个可能的解决方案是创建一个临时的画布元素,这个解决方案还需要html2canvas.js https://html2canvas.hertzen.com

function getFirstPixelColor(callback) {
  const width = window.innerWidth;
  const height = window.innerHeight;
  const canvas = document.createElement('canvas');
  canvas.width = width;
  canvas.height = height;
  const context = canvas.getContext('2d');

  html2canvas(document.body, {canvas: canvas}).then(() => {
    const imageData = context.getImageData(0, 0, width, height);
    const firstPixelColor = {
      r: imageData.data[0],
      g: imageData.data[1],
      b: imageData.data[2],
      a: imageData.data[3]
    };
    callback(firstPixelColor);
  });
}

getFirstPixelColor((color) => {
  console.log(`First pixel color: rgba(${color.r}, ${color.g}, ${color.b}, ${color.a})`);
});

相关问题