2011-12-26 15 views
8

¿Hay alguna forma de obtener una altura .png sin crear ImageView?Titanio: obtenga la altura png sin crear ImageView

Los métodos que encontré en google requieren createImageView primero y luego hacer un .height.

Quiero evitar crear ImageView porque voy a crearImageView después de obtener el png de altura y realizar algunos cambios.

O, mejor dicho, usaré el valor de altura durante el var imagevariablename = Ti.UI.createImageView, por lo que no puedo usar imagevariablename.height porque la declaración de var imagevariablename aún no está lista.

Respuesta

6

No conozco ninguna forma de obtener el alto/ancho de una imagen sin crear un imageView en Titanium. En mi aplicación, creo una vista de imagen temporal y leo los atributos sin agregarla a una vista/ventana. A continuación, puede crear la vista de la imagen 'real' una vez que se conoce el tamaño:

var imageTemp = Ti.UI.createImageView({ 
    image : someFile.read(), 
    height:'auto', 
    width:'auto' 
}); 
Ti.API.info("height=" + imageTemp.size.height); 
Ti.API.info("width=" + imageTemp.size.width); 
imageTemp = null; 
+0

No funciona con la versión sdk 2.1.1.GA –

1

Si crea una gota de su imagen se puede conseguir la anchura y la altura de la burbuja

a partir de documentos de titanio: Si este blob representa una imagen, esta es la altura de la imagen en píxeles.

4

probar este código

var imageTemp = Ti.UI.createImageView({ 
    image : <image>, 
    height:'auto', 
    width:'auto' 
}), 
imageSize = imageTemp.toImage(); 

Ti.API.info("height=" + imageSize.height); 
Ti.API.info("width=" + imageSize.width); 

imageTemp = imageSize = null; 
1

En mi condición de esto se ejecuta de la siguiente.

var imageTemp = Ti.UI.createImageView({ 
    image : someFile.read(), 
    height:'auto', 
    width:'auto' 
}); 
alert("height=" + imageTemp.toBlob().height); 
alert("width=" + imageTemp.toBlob().width); 
imageTemp = null; 
1

Estaba trabajando en esto y tuve problemas con el código anterior utilizando 3.2.2, probando en Android. Varios intentos me darían 1, 0 o TAMAÑO para los valores de ancho y alto. Esto SI usa un imageView, pero el siguiente me da todo lo que necesito en este entorno. También estoy usando el evento load en lugar de postLayout. Espero que esto ayude a alguien.

$.map.image = 'http://getyourownimage.com/dev/8fac94c6-872b-4bda-a56a-7dba09188c66.png'; 
$.map.zIndex = 1; 
$.map.width = 'auto'; 
$.map.height = 'auto'; 

$.map.addEventListener('load',function(e){ 
    var rect = $.map.getRect(); 
    Ti.API.info(rect.width); //actual width of imageView 
    Ti.API.info(rect.height); //actual height of imageView 
    Ti.API.info($.map.getWidth()); //returns auto/SIZE, doesn't work 
    Ti.API.info($.map.getHeight()); //returns auto/SIZE, doesn't work 
    Ti.API.info($.map.toImage().width); //some scaled value, not useful 
    Ti.API.info($.map.toImage().height); //some scaled value, not useful 
    Ti.API.info($.map.toBlob().width); //image original/full size width 
    Ti.API.info($.map.toBlob().height); //image original/full size height  
    alert('rectX:'+rect.width+',rectY:'+rect.height+',mapGW:'+$.map.getWidth()+',mapGH:'+$.map.getHeight()+',tiX:'+$.map.toImage().width+',tiY:'+$.map.toImage().height+',tbX:'+$.map.toBlob().width+',tbY:'+$.map.toBlob().height); 
}); 
Cuestiones relacionadas