Если пользователь выбирает изображение, я просматриваю его в div как фоновое изображение, у меня есть 2 поля ввода (ширина, высота), поэтому пользователь может определить ширину и высоту загруженного изображения образ.Изменение ширины файла изображения javascript
Я хочу изменить размер изображения предварительного просмотра, если пользователь изменит ширину/высоту.
Но я получаю сообщение об ошибке: Uncaught TypeError: Cannot read property 'width' of undefined
Вот мой код:
HTML - поля ввода
<input type="file" name="sourceImage" id="sourceImage">
<input type="text" class="form-control input-width input-px" maxlength="2" name="width">CM breed
<input type="text" class="form-control input-height input-px" maxlength="2" name="height">CM hoog
Javascript - функции
В этой функции я просмотреть изображение и поместить изображение в изображение var
var image;
$(function() {
$("#sourceImage").on("change", function()
{
var files = !!this.files ? this.files : [];
if (!files.length || !window.FileReader) return; // no file selected, or no FileReader support
if (/^image/.test(files[0].type)){ // only image file
var reader = new FileReader(); // instance of the FileReader
reader.readAsDataURL(files[0]); // read the local file
image = this.result;
reader.onloadend = function(){ // set image data as background of div
$(".source").css("background-image", "url("+this.result+")");
}
}
});
});
в этой функции я хочу изменить ширину вара изображения, который имеет файл, хранящийся в
$(function(){
$(".input-px").on("change", function()
{
image.width($(".input-width").val());
})
})
'в этой функции ...' Где эта функция по отношению к остальной части кода? Сообщение об ошибке сообщает вам, что именно не так: 'Невозможно прочитать свойство 'width' of undefined'. –
Вы присваиваете this.result переменной изображения в неправильном месте, поскольку она будет доступна внутри функции onloadend. Однако значение, возвращаемое this.result, представляет собой строку, а не объект изображения, который вы ожидаете от него. Возможно, вам придется использовать другой подход для изменения размера фонового изображения, [this] (http://stackoverflow.com/questions/20958078/resize-base64-image-in-javascript-without-using-canvas). В этом вопросе говорится о возможное решение. –
См. [Это] (http://stackoverflow.com/questions/23945494/use-html5-to-resize-an-image-before-upload/24015367#24015367). –