UNPKG

betajs-browser

Version:

BetaJS-Browser is a client-side JavaScript framework for Browser-specific methods.

40 lines 1.58 kB
Scoped.define("module:Canvas", [ "base:Maths" ], function(Maths) { return { isCanvasBlack: function(canvas) { if (!canvas) throw Error("Missing canvas"); var data = canvas.getContext('2d').getImageData(0, 0, canvas.width, canvas.height).data; if (!data) return; var MAX_SAMPLE_SIZE = 10000; var sum = 0; var count = 0; if (canvas.width * canvas.height * 3 / 4 < MAX_SAMPLE_SIZE) { // sample all pixels sum = data.reduce(function(s, v, i) { if (i && (i + 1) % 4 !== 0) { s += v; count++; } return s; }); return sum / count < 10; } else { // random sampling count = MAX_SAMPLE_SIZE; for (var n = 0; n < MAX_SAMPLE_SIZE; n++) { var i = Maths.randomInt(0, data.length); while (i && (i + 1) % 4 === 0) i = Maths.randomInt(0, data.length); sum += data[i]; } } return sum / count < 10; }, isImageBlack: function(image) { if (!image) throw Error("Missing image"); var canvas = document.createElement("canvas"); canvas.width = image.width; canvas.height = image.height; canvas.getContext('2d').drawImage(image, 0, 0, canvas.width, canvas.height); return this.isCanvasBlack(canvas); } }; });