Как определить, пуст ли холст html5?

У меня есть приложение для рисования, которое сохраняет холст html5 в изображение в s3. Я хочу избежать сохранения пустых (полностью прозрачных) png, если пользователь случайно нажмет «сохранить», ничего не нарисовав. Я обнаружил, что даже для пустого холста toDataURL() никогда не бывает пустой строкой, а представляет собой огромный массив данных. Эта строка всегда остается неизменной, если на холст не добавляются данные. Таким образом, один из способов обнаружения пустого холста — сравнить отправленные данные холста с этой пустой строкой данных холста, чтобы увидеть, совпадают ли они.

Мой вопрос в том, есть ли более эффективный способ сделать это? Выполнение сравнения двух строк длиной в тысячи символов означает, что мы должны сравнивать весь путь до последнего символа, если действительно представлен пустой холст. Является ли более эффективным сначала вычислить хэш md5 вновь отправленного холста, а затем сравнить его с хэшем md5 известной пустой строки данных холста? Что быстрее?

Есть ли другие способы определения пустого холста?

Например: является ли сравнение длины строк надежным тестом для сопоставления пустого холста?


person Homan    schedule 25.06.2011    source источник
comment
Аналогичный вопрос stackoverflow.com/q/4644524/684229   -  person Tomas    schedule 30.06.2013


Ответы (1)


Можете ли вы легко обнаружить щелчки/рисовки? Если это так, у вас может быть начальное логическое значение «пустой холст», которое переворачивается при первом рисовании пользователем чего-либо.

К сожалению, это не поможет, если пользователь что-то нарисует, затем сотрет, а затем сохранит.

person shelman    schedule 25.06.2011
comment
Да, я могу установить скрытое поле, если они сделали mouseDown в холсте. Я полагаю, что это сработает в большинстве случаев, тогда я смогу избежать проверки фактического пустого файла. Таким образом, решение состоит в том, чтобы не иметь ластика! :) - person Homan; 27.06.2011
comment
вы всегда можете изменить логическое значение на false, если пользователь нажимает кнопку стирания, тогда оно будет работать отлично - person Gaurav Aggarwal; 03.12.2018