validar una obtener mostrar manipular imagenes imagen guardar dimensiones con array ancho alto javascript thumbnails fileapi

mostrar - obtener dimensiones de una imagen javascript



Obteniendo Dimensiones de Imagen usando Javascript File API (3)

Necesito generar una miniatura de una imagen en mi aplicación web. Hago uso de la API de archivo Html 5 para generar la miniatura.

Hice uso de los ejemplos de la URL a continuación para generar las miniaturas.

http://www.html5rocks.com/en/tutorials/file/dndfiles/

Tengo éxito en generar las miniaturas. El problema que tengo es que puedo generar miniaturas solo usando un tamaño estático. ¿Hay alguna manera de obtener las dimensiones del archivo del archivo seleccionado y luego crear el objeto Imagen?


Envolví la respuesta de pimvdb en una función para propósito general en mi proyecto:

function checkImageSize(image, minW, minH, maxW, maxH, cbOK, cbKO){ //check whether browser fully supports all File API if (window.File && window.FileReader && window.FileList && window.Blob) { var fr = new FileReader; fr.onload = function() { // file is loaded var img = new Image; img.onload = function() { // image is loaded; sizes are available if(img.width < minW || img.height < minH || img.width > maxW || img.height > maxH){ cbKO(); }else{ cbOK(); } }; img.src = fr.result; // is the data URL because called with readAsDataURL }; fr.readAsDataURL(image.files[0]); }else{ alert("Please upgrade your browser, because your current browser lacks some new features we need!"); } }


O use un objeto URL: http://jsfiddle.net/8C4UB/

var url = URL.createObjectURL(this.files[0]); var img = new Image; img.onload = function() { alert(img.width); }; img.src = url;


Sí, lea el archivo como una URL de datos y pase esa URL de datos al src de una Image : http://jsfiddle.net/pimvdb/eD2Ez/2/ .

var fr = new FileReader; fr.onload = function() { // file is loaded var img = new Image; img.onload = function() { alert(img.width); // image is loaded; sizes are available }; img.src = fr.result; // is the data URL because called with readAsDataURL }; fr.readAsDataURL(this.files[0]); // I''m using a <input type="file"> for demonstrating