SQlite數據庫中可以直接保存圖片,有兩點說明:
1.建數據庫表時,保存圖片的表字段類型爲BLOB。
2.圖片類型爲Bitmap
保存到數據庫中的代碼如下:
final ByteArrayOutputStream os = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, os);
cv.put("pic", os.toByteArray());
代碼說明:
第一行,構造一個字節輸出流對象,用於保存圖片數據
第二行中的bmp爲要保存到數據庫中圖片,在此圖片必須爲Bitmap類型
第三行,cv爲ContentValues對象,"pic"爲數據庫表中用於保存圖片的字段名稱
用sqlite工具就可以在數據庫直接查看保存到數據庫表中的圖片
從數據庫中讀取圖片代碼如下:
byte[] data = cursor.getBlob(cursor.getColumnIndex("pic")); BitmapFactory.Options opts = new BitmapFactory.Options(); BitmapFactory.decodeByteArray(data, 0, data.length, opts)
代碼說明:
第一行,從遊標cursor中獲得圖片數據,cursor是遊標Cursor對象,"pic"爲數據庫表中用於保存圖片的字段名稱
第二行第三行,利用得到的字節數組構造Bitmap對象。
最後說明:通過上面的幾行代碼就可以實現圖片在數據庫中的保存、查詢,但有時候在構造Bitmap對象時會出現內存溢出異常,這將在下一篇中處理