У меня есть функция изменения размера изображения, при использовании этой функции я получаю пустую строку ""
, а reader.onload
не запускается, сначала я хочу запустить reader.onload
, как я могу это исправить?
function Ds_JsImgResize( Filereq,MaxWidth , MaxHeight) {
if (Filereq.files.length != 0) {
AjaxBegin();
var file = Filereq.files[0];
var file_type = file.type;
if (file_type && file_type.substr(0, 5) == "image") {
var img = document.createElement("img");
var reader = new FileReader();
reader.onload = function (e)
{
debugger
img.src = e.target.result;
img.onload = function (imageEvent) {
var MAX_WIDTH = MaxWidth;//300;
var MAX_HEIGHT = MaxHeight;//300;
var width = img.naturalWidth;
var height = img.naturalHeight;
//resize the image if it higher than MAX_WIDTH or MAX_HEIGHT
if ((width > MAX_WIDTH) || (height > MAX_HEIGHT)) {
if ((width / height) > (MAX_WIDTH / MAX_HEIGHT)) {
height *= MAX_WIDTH / width;
width = MAX_WIDTH;
}
else {
width *= MAX_HEIGHT / height;
height = MAX_HEIGHT;
}
var canvas = document.createElement("canvas");
canvas.width = width;
canvas.height = height;
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0, width, height);
//following two lines saves the image
var image = canvas.toDataURL("image/png");
// $('#PicPic').attr('src', image);
AjaxComplete();
return image;
// DsformData.append('PicV', image);
//Ds_IM_JsCallAjax_async(DsformData, 'LC_Prof_IM_JsSabt_AfterAjax');
// return 0;
}
};
};
AjaxComplete();
reader.readAsDataURL(file);
}
AjaxComplete();
return "";
}
AjaxComplete();
return "";
}