我正在为图片上传开发一个小功能。此图像上传会在客户端上调整所选图片的大小,并上传已调整大小的图像。
这样可行,但浏览器会在" resizes-functional"之间挂起很多东西。 这是我的代码:
function manageImage(file) {
if (!file) return;
var mime = file.type;
var src = URL.createObjectURL(file);
loadImage.parseMetaData(file, function (data) {
var options = { maxWidth: 1920, maxHeight: 1920, canvas: true };
if (data.exif) {
options.orientation = data.exif.get('Orientation');
}
loadImage(file,
function (img, test) {
loaded++;
var formData = new FormData();
formData.append("image", dataURI);
$.ajax({
url: "/URL",
data: formData,
cache: false,
contentType: false,
processData: false,
async: false,
type: "POST",
success: function (resp) {
}
}).error(function () {
}).done(function () {
if (loaded < checkedFiles.length) {
manageImage(files[loaded]);
} else {
//FINISHED
}
});
},
options);
});
}
manageImage(files[0]);
这个函数是递归的,因为我在迭代时遇到了一些问题(浏览器挂起,内存和cpu使用)。
此外,我正在使用此库获取EXIF数据并在手机上正确定位: https://github.com/blueimp/JavaScript-Load-Image
使用一个或两个选定的图片(例如7MB),它工作得很完美,但我想上传可能50张图片。
如果有人能给我一个线索,那会很棒吗?!