validar una pagina obtener llamar imagen funcion evento ejecutar dimensiones despues desde cargar carga asincrona archivo antes ancho alto javascript image file-upload image-size

javascript - pagina - obtener ancho y alto de una imagen jquery



Verifique el ancho y alto de la imagen antes de cargarla con Javascript (3)

El archivo es solo un archivo, debes crear una imagen como esta:

var _URL = window.URL || window.webkitURL; $("#file").change(function (e) { var file, img; if ((file = this.files[0])) { img = new Image(); img.onload = function () { alert(this.width + " " + this.height); }; img.src = _URL.createObjectURL(file); } });

Demostración: http://jsfiddle.net/4N6D9/1/

Supongo que te das cuenta de que esto solo se admite en algunos navegadores. Sobre todo firefox y cromo, podría ser la ópera también por ahora.

Tengo un JPS con un formulario en el que un usuario puede poner una imagen:

<div class="photo"> <div>Photo (max 240x240 and 100 kb):</div> <input type="file" name="photo" id="photoInput" onchange="checkPhoto(this)"/> </div>

He escrito esto js:

function checkPhoto(target) { if(target.files[0].type.indexOf("image") == -1) { document.getElementById("photoLabel").innerHTML = "File not supported"; return false; } if(target.files[0].size > 102400) { document.getElementById("photoLabel").innerHTML = "Image too big (max 100kb)"; return false; } document.getElementById("photoLabel").innerHTML = ""; return true; }

que funciona bien para verificar el tipo y tamaño del archivo. Ahora quiero verificar el ancho y alto de la imagen pero no puedo hacerlo.
Lo he intentado con target.files[0].width pero no estoy undefined . Con otras formas obtengo 0 .
¿Alguna sugerencia?


En mi opinión, la respuesta perfecta que debes requerir es

var reader = new FileReader(); //Read the contents of Image File. reader.readAsDataURL(fileUpload.files[0]); reader.onload = function (e) { //Initiate the JavaScript Image object. var image = new Image(); //Set the Base64 string return from FileReader as source. image.src = e.target.result; //Validate the File Height and Width. image.onload = function () { var height = this.height; var width = this.width; if (height > 100 || width > 100) { alert("Height and Width must not exceed 100px."); return false; } alert("Uploaded image has valid Height and Width."); return true; }; }


Estoy de acuerdo. Una vez que se carga en algún lugar al que puede acceder el navegador del usuario, es bastante fácil obtener el tamaño. Como debe esperar a que se cargue la imagen, querrá conectar el evento de carga para img .

var width, height; var img = document.createElement("img"); img.onload = function() { // `naturalWidth`/`naturalHeight` aren''t supported on <IE9. Fallback to normal width/height // The natural size is the actual image size regardless of rendering. // The ''normal'' width/height are for the **rendered** size. width = img.naturalWidth || img.width; height = img.naturalHeight || img.height; // Do something with the width and height } // Setting the source makes it start downloading and eventually call `onload` img.src = "http://your.website.com/userUploadedImage.jpg";