Использовать Canvas и HTML5.
Это довольно просто, просто используйте FileReader (не будет работать на iOS / iPhone, так как у них нет файлов на уровне пользователя), чтобы открыть список File / File, который вы получите из файла типа вводаelement:
function fileSelectHandler(e) {
files = e.target.files;
var len = files.length;
for(var filei = 0; filei < len; filei += 1) {
var aFile = files[filei];
var fileReader = new FileReader();
fileReader.onload = (function (theFile) {
return function(e) {
if(e.target.result != null && e.target.result != undefined) {
var imge = new Image();
imge.src = e.target.result;
imageDataURLs[theFile.name] = imge;
imge.onload = (function () {
return function(e) {
draggables[0] = new Draggable(g3,imge);
draggableFlow.launch();
};
})();
}
};
})(aFile);
fileReader.readAsDataURL(aFile);
} // for next file
};
Затем запишите изображение в элемент canvas и разрешите пользователю перетаскивать его и обрезать.Когда они счастливы, возьмите данные с холста, используя CanvasRenderingContext2D.getImageData, и отправьте эту строку base64 на сервер в XHR.