Медленная загрузка изображений из базы данных - PullRequest
0 голосов
/ 23 апреля 2011

Привет. SDK 1.6.2

Я храню местоположение снимков камеры в базе данных вместе с другой информацией.

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

Чем больше у меня изображений, тем дольше это окно загружается (остается пустым до завершения)

Вот как я называю изображения:

var imageArray = [];
var images = [];

// open and parse database
var db = Titanium.Database.open('photoDB');

    var dbrows = db.execute('select id, date, image, tags from images order by date asc');

    while (dbrows.isValidRow()) {

        imagesArray.push({
        id: dbrows.fieldByName('id'),
            image:dbrows.fieldByName('image'), // image is the location of the stored image inside of applicationDataDirectory
            tags:dbrows.fieldByName('tags')
        }); 

        dbrows.next();
    }

    dbrows.close();

db.close();

// Load in the images
for (var i = 0; i < imageArray.length; i++){
    var pushleft = ((i % 4) * 76); // tile from left
    var pushtop = (Math.floor(i/4) * 100); //tile from top

    var file = Titanium.Filesystem.getFile(Ti.Filesystem.applicationDataDirectory, imageArray[i].image);

    if(file.exists()){

        images[i] = Ti.UI.createImageView({
            image: file.nativePath,
            width: 75,
            height: 96,
            left: pushleft,
            top: pushtop,
            store_id: imageArray[i].id,
            zIndex: 99
        });

        win.add(images[i]);
    }
}

Я не уверен, происходит ли задержка getFile или, возможно, размер сохраняемых изображений?

У меня было сохранено 10 изображений, и это окно заняло 13 секунд для загрузки. Если бы я не знал, ждать, я бы подумал, что он сломался и покинул приложение ...

Есть мысли? Спасибо!

1 Ответ

2 голосов
/ 23 апреля 2011

Мое первое предложение будет таким: если вы только показываете изображение размером 75 X 96; тогда зачем сохранять гораздо большее изображение?

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

Кроме того, на каком ты устройстве? IOS или Android?

...