Я знаю, что это может быть поздний ответ, но попробуйте это решение:
Саймон Саррис говорит, что:
Вместо проверки каждого отдельного пикселя, это может быть гораздо эффективнеепросто записывайте каждый раз, когда холст заполняется или гладится.
Хотя это было бы более эффективно, однако мне удалось найти способ обнаружить холст, чтобы увидеть, нарисован ли он или нарисован, проверяякаждый пиксель.Мне нужно было поэкспериментировать, чтобы увидеть, какие результаты возвращают данные пикселей, когда холст пуст и когда он нарисован.Я обнаружил, что когда холст пуст, все пиксельные данные возвращают 0
во всех позициях индекса массива.Поэтому я использовал это, чтобы определить, есть ли какие-либо 0
или нет, и в результате я сделал это, чтобы он возвращал логическое значение.Если холст был нарисован, он возвращает true
, а если нет, то возвращает false
.
Вы можете проверить это Здесь на JSfiddle
код:
function isDrawnOn() {
var imageData = context.getImageData(0, 0, canvas.width, canvas.height);
var data = imageData.data;
var result = null;
var counter = 0;
var last = data.length - 1;
for (var i = 0; i < data.length; i++) {
if (i === last && counter !== 0 && counter === last) {
result = false;
break;
} else if (data[i] !== 0 && data[i] > 0) {
result = true;
break;
} else {
counter++;
continue;
}
}
return result;
}
Надеюсь, это поможет:)