Titanium: получить высоту png без создания ImageView - PullRequest
8 голосов
/ 26 декабря 2011

Есть ли способ получить высоту .png без создания ImageView?

Методы, которые я нашел в Google, сначала требуют createImageView, а затем - .height.

Я хочу избежать создания ImageView, потому что я собираюсь создатьImageView после того, как получу высоту png и выполню некоторые изменения.

Вернее, я буду использовать значение высоты во время самого var imagevariablename = Ti.UI.createImageView, поэтому я не могу использовать imagevariablename.height, потому что объявление var imagevariablename еще не сделано.

Ответы [ 5 ]

5 голосов
/ 21 ноября 2012

Попробуйте этот код

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;
5 голосов
/ 27 декабря 2011

Я не знаю ни одного способа получить высоту / ширину изображения без создания imageView в Titanium. В моем приложении я создаю временный вид изображения и читаю атрибуты, даже не добавляя его в вид / окно. Затем вы можете создать «реальный» вид изображения, когда вы знаете размер:

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;
1 голос
/ 02 апреля 2014

Я работал над этим и имел проблемы с кодом выше, используя 3.2.2, тестирование на Android. Различные попытки просто дали бы мне 1, 0 или РАЗМЕР для значений ширины и высоты. Это использует imageView, но следующее дает мне все, что мне нужно в этой среде. Я также использую событие загрузки вместо 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);
});
1 голос
/ 08 января 2013

В моем состоянии это так:

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 голос
/ 19 августа 2012

Если вы создаете BLOB-объект из вашего изображения, вы можете получить ширину и высоту из BLOB-объекта

Из титановых документов: Если этот шарик представляет изображение, это высота изображения в пикселях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...