如何检查画布是否为空白?

use*_*056 20 javascript html5 canvas

如果HTML5画布为空白或有彩色像素,我该如何检查.有快速的方法吗?

<canvas width="200" height="200"></canvas>
Run Code Online (Sandbox Code Playgroud)

Aus*_*rst 53

您可以创建一个新的空白画布,并比较数据URL.

// returns true if all color channels in each pixel are 0 (or "blank")
function isCanvasBlank(canvas) {
  return !canvas.getContext('2d')
    .getImageData(0, 0, canvas.width, canvas.height).data
    .some(channel => channel !== 0);
}
Run Code Online (Sandbox Code Playgroud)

的jsfiddle

  • 您可以通过检查Uint32Array而不是检查Uint8Clamped来获得更快的速度:https://jsbench.me/e3jsy70r9c/1 (2认同)