У меня есть страница, на которой пользователь может рисовать на холсте и сохранять изображение в файл на сервере. Холст имеет черный фон по умолчанию. Есть ли способ проверить, что пользователь нарисовал что-либо на холсте, прежде чем отправить представление URL-адреса данных изображения холста с помощью функции toDataURL()? Поэтому, если пользователь не рисует что-либо на холсте (это будет пустой холст с черным фоном), изображение не будет создано на сервере. Должен ли я прокручивать каждый пиксель холста, чтобы определить это? Вот что я делаю в данный момент:Canvas Проверьте перед отправкой
var currentPixels = context.getImageData(0, 0, 600, 400);
for (var y = 0; y < currentPixels.height; y += 1) {
for (var x = 0; x < currentPixels.width; x += 1) {
for (var c = 0; c < 3; c += 1) {
var i = (y*currentPixels.width + x)*4 + c;
if(currentPixels.data[i]!=0)
break;
}
}
}
Что используется, чтобы позволить пользователю рисовать? Вероятно, у него есть какое-то событие или свойство, которое можно прочитать. Если нет, просто зачитайте данные с холста и проверьте каждый пиксель, чтобы найти его цвет. –
Есть ли какой-либо другой подход вместо цикла и проверки каждого пикселя? – smokinguns
Это зависит от многого. Какую библиотеку вы используете, чтобы позволить пользователю рисовать? В конце концов, это не встроенная функция. –