¿Existe una forma confiable, independiente del marco para determinar las dimensiones físicas de un <img src='xyz.jpg'>
redimensionado en el lado del cliente?¿Determina el tamaño original de la imagen del navegador cruzado?
Respuesta
tiene 2 opciones:
Opción 1:
Retire los width
y height
atributos y leer offsetWidth
y offsetHeight
Opción 2:
Crear un JavaScript Image
objeto, configure el src
, y lea width
y height
(ni siquiera tiene que agregarlo a la página para hacer esto).
function getImgSize(imgSrc) {
var newImg = new Image();
newImg.onload = function() {
var height = newImg.height;
var width = newImg.width;
alert ('The image size is '+width+'*'+height);
}
newImg.src = imgSrc; // this must be done AFTER setting onload
}
Editar por Pekka: Según lo acordado en los comentarios, me cambió la función a ejecutar en el evento'onload' de la imagen. De lo contrario, con imágenes grandes, height
y width
no devolverían nada porque la imagen aún no se había cargado.
Eso no funcionará con las imágenes que aún no están cargadas. Puede valer la pena ajustarlo para que funcione correctamente para que otras personas tropiecen con esta respuesta. – James
@Gabriel, estoy usando esto pero con una función 'newImg.onload' para asegurarme de que la imagen se cargue cuando configuro el ancho/alto. ¿Estás de acuerdo conmigo editando tu respuesta en consecuencia? –
Eso no es un problema –
Puede precargar la imagen en un objeto de imagen javascript, luego verificar las propiedades de ancho y alto en ese objeto.
Por supuesto - no lo hago tiene que ponerlo en el documento. Lo haré de esa manera, ¡salud! –
Imágenes (en Firefox por lo menos) tienen una propiedad naturalWidth
/altura de esta manera puede utilizar img.naturalWidth
para obtener la anchura original
var img = document.getElementsByTagName("img")[0];
img.onload=function(){
console.log("Width",img.naturalWidth);
console.log("Height",img.naturalHeight);
}
/* Function to return the DOM object's in crossbrowser style */
function widthCrossBrowser(element) {
/* element - DOM element */
/* For FireFox & IE */
if( element.width != undefined && element.width != '' && element.width != 0){
this.width = element.width;
}
/* For FireFox & IE */
else if(element.clientWidth != undefined && element.clientWidth != '' && element.clientWidth != 0){
this.width = element.clientWidth;
}
/* For Chrome * FireFox */
else if(element.naturalWidth != undefined && element.naturalWidth != '' && element.naturalWidth != 0){
this.width = element.naturalWidth;
}
/* For FireFox & IE */
else if(element.offsetWidth != undefined && element.offsetWidth != '' && element.offsetWidth != 0){
this.width = element.offsetWidth;
}
/*
console.info(' widthWidth width:', element.width);
console.info(' clntWidth clientWidth:', element.clientWidth);
console.info(' natWidth naturalWidth:', element.naturalWidth);
console.info(' offstWidth offsetWidth:',element.offsetWidth);
console.info(' parseInt(this.width):',parseInt(this.width));
*/
return parseInt(this.width);
}
var elementWidth = widthCrossBrowser(element);
Simplemente cambiando un poco la segunda opción de Gabriel , para ser más fácil de usar:
function getImgSize(imgSrc, callback) {
var newImg = new Image();
newImg.onload = function() {
if (callback != undefined)
callback({width: newImg.width, height: newImg.height})
}
newImg.src = imgSrc;
}
HTML: llamada
<img id="_temp_circlePic" src="http://localhost/myimage.png"
style="width: 100%; height:100%">
muestra:
getImgSize($("#_temp_circlePic").attr("src"), function (imgSize) {
// do what you want with the image's size.
var ratio = imgSize.height/$("#_temp_circlePic").height();
});
- 1. Esquinas redondeadas del navegador cruzado (sin imagen)
- 2. ventana del navegador de redimensionamiento del navegador cruzado en JavaScript
- 3. Conservar el tamaño original al exportar imagen del ilustrador
- 4. Cambiar el tamaño de la imagen original en Paperclip
- 5. ¿Cómo cambiar el tamaño de la imagen original en un tamaño de imagen común en Java?
- 6. css3 opacidad del navegador cruzado
- 7. ¿Cómo se determina el tamaño del proceso?
- 8. Tamaño de la imagen al 50% del tamaño original en HTML
- 9. Inconsistencia de altura del botón (navegador cruzado)
- 10. ¿Cómo obtener el tamaño original de una imagen -Jquery
- 11. Obteniendo el tamaño original de una imagen escalada
- 12. ¿Cómo guardo una imagen graficada y mantengo el tamaño de la imagen original en MATLAB?
- 13. iPhone: Mostrar la imagen en su tamaño original
- 14. Navegador cruzado Dom Ready
- 15. Método de navegador cruzado para detectar el scrollTop de la ventana del navegador
- 16. ¿Determina el (los) idioma (s) del navegador en Zend Framework?
- 17. detectar el tamaño de fuente del navegador
- 18. ¿Determina si la pestaña del navegador está activa? - IE?
- 19. Problema del navegador cruzado con la función jquery offset()
- 20. ¿Manera cruzada del navegador para girar la imagen usando CSS?
- 21. Raphael.js - imagen con su tamaño original de ancho y alto?
- 22. Html5 - Mensaje cruzado del iframe del navegador cruzado - ¿hijo a padre?
- 23. Desactivar ventana del navegador Cambiar el tamaño
- 24. WPF: ¿Cómo mostrar una imagen en su tamaño original?
- 25. Cambiar el tamaño de la imagen de acuerdo con el tamaño del texto
- 26. MATLAB: muestra una imagen en su tamaño original
- 27. ¿Puedo cambiar el tamaño de la ventana del navegador?
- 28. Javascript establece el tamaño de la ventana del navegador
- 29. Navegador cruzado preventDefault() sin jQuery
- 30. API de extensiones de navegador cruzado?
'img.onload = function() {console.log (img.height, img.width)}' – neaumusic