2017-05-26 97 views
0

我在圖像視圖中顯示個人資料照片,該圖像與具有Volley Post請求的網站中的用戶詳細信息一起顯示。我脫機預覽功能工作在SQLite數據庫中保存base64 encdoed圖像VS將圖像保存在手機/存儲卡上

(所有搜索歷史,將顯示配置文件數據與輪廓圖像脫機工作)我不知道,什麼是做的最好的方法:通過保存編碼

  • SQLite數據庫中的字符串和需要時拉和解碼?
  • 通過將解碼圖像保存在手機或SD卡存儲器上?

如果有人也分享兩種情況下的優點和缺點(如表現和資源問題),那將會很棒。

+0

檢查此https:// stackoverflow .com/questions/13827412/save-image-in-sqlite-database-from-android –

回答

0
  1. 在數據庫中存儲大塊數據不是很有成效。
  2. 對於二進制數據,有BLOB數據類型。 Base64編碼 - 解構在這裏是多餘的。
  3. 您可以使用隨時可用的圖像下載程序,例如GlidePicasso。它們已經附帶緩存功能。
0

我認爲這是比較容易的圖像存儲在文件系統中,在應用程序的專用區域,如果你需要一些相關的數據的圖像,只是存儲的文件名作爲數據庫中的字段。

處理BLOB字段需要大量的樣板代碼,我不認爲這樣做有很多好處。

+0

謝謝@Juan我會將文件存儲在手機內存中,而不是數據庫。 –

0

Picasso是管理您的方案的最佳方法。

首先,您不必使用「排空發佈」請求獲取圖像詳細信息。你只需要傳遞給畢加索的網址,它會管理你,你。

其次,由於畢加索已擁有自己的緩存功能,因此您也不需要在本地爲緩存功能存儲圖像數據。

這裏是你如何可以畢加索庫添加到您的項目

首先,通過搖籃下載最新的JAR或搶:

compile 'com.squareup.picasso:picasso:2.5.2' 

然後獲取圖像,並添加圖像的ImageView

Picasso.with(context) 
.load(imageUrl) 
.networkPolicy(NetworkPolicy.OFFLINE) 
. 
.into(imageView, new Callback() { 
@Override 
public void onSuccess() { 

} 

@Override 
public void onError() { 
    //Try again online if cache failed 
    Picasso.with(context) 
      .load(getImageUrl()) 
      .error(R.drawable.header) 
      .into(imageView, new Callback() { 
     @Override 
     public void onSuccess() { 

     } 

     @Override 
     public void onError() { 
      Log.v("Picasso","Could not fetch image"); 
     } 
    }); 
} 
}); 

這是完整的implementation

+0

感謝您的想法,但我不想涉及另一個圖書館。 :) –