Я беру изображение от пользователя, выполняя операцию обрезки, преобразуя его в base64, а затем рисуя на холсте. Для обрезки я использую библиотеку jcrop.
$(document).on("change","#photograph",function() {
$("#picCrop").modal('show');
$("#views").empty();
image = null;
canvas = null;
alert("canvas"+(canvas==null)+" Image"+ (image==null));
loadImage(this);
$(this).replaceWith('<input id="photograph" type="file" class="form-control">');
});
Здесь я столкнулся с проблемой, без alert("canvas"+(canvas==null)+" Image"+ (image==null)); изображение не видно на холсте, в случае больших изображений оно отображается только в том случае, если я подождал некоторое время, прежде чем нажать кнопку окна предупреждения.
Ссылка на скрипт: https://jsfiddle.net/govi20/spmc7ymp/5/ (закомментируйте строку alert, чтобы проверить результат)