2011-04-23 152 views
0

問候。 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秒加載。如果我不知道要等待,我會認爲它已損壞,並離開了應用程序...

有什麼想法?謝謝!

回答

2

我的第一個建議是,如果您只顯示尺寸爲75 X 96的圖像;那爲什麼要保存更大的圖像?

爲什麼不通過先調整大小來保存圖像的縮略圖。

另外,你在什麼設備上? IOS還是Android?

+0

亞倫,謝謝你的回覆。我正在保存整個圖像,因爲整個圖像將在稍後使用並上傳到服務器。 'iOS' – joseym 2011-04-23 14:56:32

+0

我有同樣的情況,但我保存了兩個版本的圖像。它可能會比Wi-Fi更好地運行,但如果應用程序要通過3G使用,那麼您將有一個糟糕的用戶體驗傳輸巨大的圖像在線路上來回傳輸......恕我直言。 – 2011-04-24 15:17:09

+0

我會給縮略圖創建一個鏡頭,讓你知道它是如何工作的。感謝提示@Aaron Saunders,我會盡快回復。創建單獨的縮略圖圖像的 – joseym 2011-04-25 00:26:57