2013-01-21 65 views
0

我在我的應用程序中有很多圖像,現在我把所有圖像都放在drawable中。圖像已經預先壓縮/優化以用於移動觀看。 (但我希望這些所有圖像在SD卡中,並使用該位置,而不是可繪製的,因爲大量的圖像)存儲大量圖像

我的一個要求是,我能夠爲用戶提供離線訪問。我想知道什麼是最有效的方式

存儲大量圖像的

(約四百-幾千個)

所以我的計劃是,我將存儲的所有圖像在SD卡(通過將文件夾在其中),現在將這些 圖像的鏈接存儲在數據庫表中。

因此,應用程序首先從數據庫表中獲取圖像路徑,然後從SD卡獲取文件並顯示它。

但我的問題是,我應該在開發應用程序時將這些圖像放在哪裏。

(我應該把我的所有繪製的圖像,然後將其複製SD卡programitically,然後開始使用位置!)

1)如何在SD卡所有這些圖像存儲在發展的時間的應用程序。 ? 2)所以,當我將部署我的應用程序這些所有圖像應該可以在包內?

回答

1

如果您有大量圖像,那麼在首次啓動應用程序時,從遠程位置下載圖像並將它們存儲在SD卡上並構建數據庫表。將它們放在繪圖中並將它們複製到SD卡上是沒有意義的。

編輯

如果你想一個圖像從繪製複製並存儲在SD卡上,然後這裏是你如何能做到這一點 -

你必須先繪製轉換爲位圖對象。

Bitmap bmp = BitmapFactory.decodeResource(context.getResources(), R.drawable.filenameindrawable); 

現在用FileOutputStream中

try { 
     FileOutputStream out = new FileOutputStream("file on sd card"); 
     bmp.compress(Bitmap.CompressFormat.PNG, 90, out); 
} catch (Exception e) { 
     e.printStackTrace(); 
} 

這是不推薦的,雖然方式將其存儲在SD卡上。

+0

我爲自己弱小的英語道歉,我沒有從網上下載圖片。我必須在我的應用程序包中放置所有圖像,當我安裝應用程序時,圖像應該存儲在某個目錄中,並且具有圖像名稱的目錄路徑已經存儲在數據庫中。那麼如何實現這一目標呢? – LogicBoy

+0

爲什麼你想在SD卡上的圖像,而不是在可繪製的文件夾?你可以把所有東西放在可繪製的文件夾中,然後使用R.drawable.filename來獲取它。這樣你就不必維護數據庫。 – Enigma

+0

我已經更新了我的答案。 – Enigma

0

在SD卡上存儲應用程序圖像不是一個好主意。因爲如果有人在安裝應用程序後沒有SD卡或刪除SD卡,則這些圖像將無法用於uor應用程序。任何人都可以訪問存儲在SD卡中的圖像。所以下載者應該在應用程序第一次啓動時將這些圖像存儲在應用程序的內部文件系統上,方法是從遠程位置下載圖像並將它們存儲在SD卡/ Internalfilesystem中並更新您的數據庫表。

+0

感謝raj,但我將所有這些圖像放在我的可繪製文件夾中,並且我沒有從任何地方下載它,它將在安裝應用程序時駐留在應用程序包中。所以讓我知道把這些放在哪裏。 drawable或其他地方。? – LogicBoy

+0

當我將安裝apk,所有圖像應該被複制到SD卡。?我如何做這個功能? – LogicBoy