Android利用LitePal操作數(shù)據(jù)庫存取圖片
Android數(shù)據(jù)庫中存取圖片通常使用兩種方式,一種是保存圖片所在路徑,二是將圖片以二進(jìn)制的形式存儲(sqlite3支持BLOB數(shù)據(jù)類型)。對于兩種方法的使用,好像第二種方法不如第一種方法更受程序員歡迎,他們認(rèn)為,在很多數(shù)據(jù)庫語言里,處理大字段都是不容易的,像圖片這樣的文件放在數(shù)據(jù)庫里會有問題:對數(shù)據(jù)庫的讀寫速度永遠(yuǎn)趕不上文件系統(tǒng)的處理速度,使數(shù)據(jù)庫變得巨大;但也有很多人認(rèn)為像圖片這樣的數(shù)據(jù)存放在數(shù)據(jù)庫中也有好處:易于備份,且備份速度絕對比備份文件快,比較容易數(shù)據(jù)遷移等等。其實(shí)這兩種方法都有優(yōu)缺點(diǎn),具體使用哪種方法要視情況而定。個人傾向于使用數(shù)據(jù)庫存取圖片,因?yàn)閭€人認(rèn)為存到數(shù)據(jù)庫里的數(shù)據(jù)不會因外部數(shù)據(jù)的變化而丟失改變,比如你拍照獲得一張圖片,如果是將路徑存到數(shù)據(jù)庫,當(dāng)這張照片被刪除之后,下次讀取數(shù)據(jù)庫就得不到想要的結(jié)果了。接下來詳細(xì)介紹數(shù)據(jù)庫存取圖片的方法:
1、把圖片轉(zhuǎn)換為字節(jié)
private byte[]img(Bitmap bitmap){ ByteArrayOutputStream baos = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos); return baos.toByteArray(); }
2、把圖片存儲到數(shù)據(jù)庫
假設(shè)獲取的圖片為bitmap,數(shù)據(jù)庫有一張User表,存儲的屬性為byte[]headshot
public class User extends DataSupport { private byte[] headshot;//頭像 public User(){ super(); } public User(byte[]headshot){ super(); this.headshot=headshot; } public byte[] getHeadshot() { return headshot; } public void setHeadshot(byte[] headshot) { this.headshot = headshot; } }
對圖片進(jìn)行保存
//獲取到圖片 Bitmap headShot=BitmapFactory.decodeFile(imagePath); //把圖片轉(zhuǎn)換字節(jié)流 byte[]images=img(headShot); //找到用戶 User users=DataSupport.findFirst(User.class); //保存 users.setHeadshot(images); users.save();
4、獲取圖片
User mUser=DataSupport.findFrist(User.class); byte[]images=mUser.getHeadshot(); Bitmap bitmap=BitmapFactory.decodeByteArray(images,0,images.length);
好了,到此完成對數(shù)據(jù)庫存取圖片。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android RecyclerView選擇多個item的實(shí)現(xiàn)代碼
這篇文章主要為大家詳細(xì)介紹了Android RecyclerView選擇多個item的實(shí)現(xiàn)代碼,仿網(wǎng)易新聞客戶端頻道選擇效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02Android四大組件之Service(服務(wù))實(shí)例詳解
這篇文章主要介紹了Android四大組件之Service(服務(wù))的用法,結(jié)合實(shí)例形式詳細(xì)分析了Service的基本概念,類型,用法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2016-01-01Android自定義View軟鍵盤實(shí)現(xiàn)搜索
本文給大家分享android自定義view軟鍵盤實(shí)現(xiàn)搜索,對android軟鍵盤相關(guān)知識感興趣的朋友一起學(xué)習(xí)吧2015-12-12Android編程實(shí)現(xiàn)使用handler在子線程中更新UI示例
這篇文章主要介紹了Android編程實(shí)現(xiàn)使用handler在子線程中更新UI,涉及Android線程與界面布局相關(guān)操作技巧,需要的朋友可以參考下2017-09-09Android網(wǎng)絡(luò)監(jiān)聽和網(wǎng)絡(luò)判斷示例介紹
大家好,本篇文章主要講的是Android網(wǎng)絡(luò)監(jiān)聽和網(wǎng)絡(luò)判斷示例介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12Android 中為什么要用Fragment.setArguments(Bundle bundle)來傳遞參數(shù)
這篇文章主要介紹了Android 中為什么要用Fragment.setArguments(Bundle bundle)來傳遞參數(shù),非常不錯,具有參考借鑒價(jià)值,需要的朋友參考下2017-01-01Android之AnimationDrawable簡單模擬動態(tài)圖
這篇文章主要為大家詳細(xì)介紹了Android之AnimationDrawable簡單模擬動態(tài)圖的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09