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对象时会出现内存溢出异常,这将在下一篇中处理