2011-12-26 27 views
8

Có cách nào để có được chiều cao .png mà không cần tạo ImageView không?Titanium: có chiều cao png mà không cần tạo ImageView

Các phương pháp tôi tìm thấy trên google yêu cầu createImageView trước và sau đó thực hiện .height.

Tôi muốn tránh tạo ImageView vì tôi sẽ createImageView sau khi tôi nhận được chiều cao của png và thực hiện một số thay đổi. Hoặc thay vào đó, tôi sẽ sử dụng giá trị độ cao trong chính var imagevariablename = Ti.UI.createImageView, vì vậy tôi không thể sử dụng imagevariablename.height vì khai báo var imagevariablename vẫn chưa được thực hiện.

Trả lời

6

Tôi không biết cách nào để có được chiều cao/chiều rộng của hình ảnh mà không cần tạo imageView trong Titanium. Trong ứng dụng của tôi, tôi tạo chế độ xem hình ảnh tạm thời và đọc các thuộc tính mà không cần thêm nó vào chế độ xem/cửa sổ. Sau đó, bạn có thể tạo ra cái nhìn hình ảnh 'thật' khi bạn biết kích thước:

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

Nó không hoạt động với phiên bản sdk 2.1.1.GA –

1

Nếu bạn tạo một Blob từ hình ảnh của bạn, bạn có thể nhận được chiều rộng và chiều cao từ blob

Từ tài liệu Titanium: Nếu đốm màu này đại diện cho một hình ảnh, đây là chiều cao của hình ảnh theo pixel.

4

Hãy thử mã này

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

Trong điều kiện của tôi này được điều hành như thế này.

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

Tôi đang làm việc này và gặp sự cố với mã ở trên bằng cách sử dụng 3.2.2, thử nghiệm trên Android. Các lần thử khác nhau sẽ chỉ cho tôi 1, 0 hoặc SIZE cho giá trị chiều rộng và chiều cao. Điều này sử dụng một imageView, nhưng sau đây được cho tôi tất cả mọi thứ tôi cần trong môi trường này. Tôi cũng đang sử dụng sự kiện tải thay vì postLayout. Hy vọng rằng điều này sẽ giúp một ai đó.

$.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); 
}); 
Các vấn đề liên quan