2011-12-26 24 views
8

有沒有辦法在不創建ImageView的情況下獲得.png高度?鈦:獲取PNG高度而不創建ImageView

我在google上找到的方法首先需要createImageView,然後再做一個.height。

我想避免創建ImageView,因爲我在獲取png的高度並執行一些更改後將創建imageImageView。或者更確切地說,我將在var imagevariablename = Ti.UI.createImageView本身中使用高度值,因此我無法使用imagevariablename.height,因爲var imagevariablename的聲明尚未完成。

回答

6

我不知道有什麼方法可以在不創建imageView的情況下獲取圖像的高度/寬度。在我的應用程序中,我創建了一個臨時圖像視圖並讀取了屬性,而無需將其添加到視圖/窗口中。

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

它不適用於sdk版本2.1.1.GA – 2012-08-15 11:05:33

1

如果您從您的圖像斑點,你可以得到的寬度和高度從團塊

鈦文檔:然後,一旦你知道大小,您可以創建「真正」的圖像視圖 如果這個blob代表一個圖像,這是以像素爲單位的圖像的高度。

4

試試這個代碼

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

在我的條件,這是會像這樣運行。

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

我正在研究這個問題,並且使用3.2.2在Android上進行測試時遇到了上述問題。各種嘗試只會給我1,0或SIZE的寬度和高度值。這樣做可以使用imageView,但以下功能可以在此環境中獲得所需的一切。我也使用load事件而不是postLayout。希望這有助於某人。

$.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); 
});