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

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐