Android數據操作之 LitePal操作數據庫存取圖片

整理了一下郭霖大神litepal相關的文章

A,郭霖litePal專欄:https://blog.csdn.net/sinyu890807/category_2522725.html

B,LitePal github地址:https://github.com/LitePalFramework/LitePal

C,LitePal 1.6.0版本來襲,數據加解密功能保障你的應用數據安全 (存儲數據到SD卡) https://mp.weixin.qq.com/s/TSp36cnKLxUmAHjT86UCrQ

D,Android數據庫高手祕籍(九),趕快使用LitePal 2.0版本吧(代碼混淆)  https://blog.csdn.net/cjm2484836553/article/details/78279457

起步上手直接參考github文章就可以了

E,LitePal源碼分析 https://www.jianshu.com/p/2d128d4aa00c

下面內容參考鏈接:https://blog.csdn.net/m0_37930105/article/details/76595309

Android數據庫中存取圖片通常使用兩種方式,一種是保存圖片所在路徑,二是將圖片以二進制的形式存儲(sqlite3支持BLOB數據類型)。對於兩種方法的使用,好像第二種方法不如第一種方法更受程序員歡迎,他們認爲,在很多數據庫語言裏,處理大字段都是不容易的,像圖片這樣的文件放在數據庫裏會有問題:對數據庫的讀寫速度永遠趕不上文件系統的處理速度,使數據庫變得巨大;但也有很多人認爲像圖片這樣的數據存放在數據庫中也有好處:易於備份,且備份速度絕對比備份文件快,比較容易數據遷移等等。其實這兩種方法都有優缺點,具體使用哪種方法要視情況而定。個人傾向於使用數據庫存取圖片,因爲個人認爲存到數據庫裏的數據不會因外部數據的變化而丟失改變,比如你拍照獲得一張圖片,如果是將路徑存到數據庫,當這張照片被刪除之後,下次讀取數據庫就得不到想要的結果了。接下來詳細介紹數據庫存取圖片的方法:

1、把圖片轉換爲字節
 

private byte[]img(Bitmap bitmap){
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
        return baos.toByteArray();
    }

2、把圖片存儲到數據庫

假設獲取的圖片爲bitmap

數據庫有一張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;
    }
}

3、對圖片進行保存

//獲取到圖片
Bitmap headShot=BitmapFactory.decodeFile(imagePath);
//把圖片轉換字節流
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);

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章