1.将图片转化为byte数组
2.将byte数组放入contentvalues
3.执行数据库的insert *** 作,将contentvalues里面的值存入sqlite
代码大致如下://转换
Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.icon)
0202020202020202 ByteArrayOutputStream baos = new ByteArrayOutputStream()02020202
0202020202020202 bm.compress(Bitmap.CompressFormat.PNG, 100, baos)02020202
0202020202020202 byte[] result = baos.toByteArray()0202//装入
ContentValues values = new ContentValues()
values.put("image", result)//插入数据库
图片等二进制媒体数据可以保存到BLOB类型的字段里,例子:http://blog.csdn.net/zhouyongyang621/archive/2010/03/26/5418586.aspx
但是一般不推荐这么做,因为如果保存大量媒体数据那么数据库的大小会激增,导致数据库访问性能下降。还是把图保存到文件里,然后在数据库里加个字段引用文件路径吧。
建议你尽可能把图保存到SD卡上(/sdcard),如果没有SD卡就保存到应用程序的私有目录里(/data/data/packagename/)
Java代码
public void saveIcon(Bitmap icon) {
if (icon == null) {
return
}
// 最终图标要保存到浏览器的内部数据库中,系统程序均保存为SQLite格式,Browser也不例外,因为图片是二进制的所以使用字节数组存储数据库的
// BLOB类型
final ByteArrayOutputStream os = new ByteArrayOutputStream()
// 将Bitmap压缩成PNG编码,质量为100%存储
icon.compress(Bitmap.CompressFormat.PNG, 100, os)
// 构造SQLite的Content对象,这里也可以使用
raw ContentValues values = new ContentValues()
// 写入数据库的
Browser.BookmarkColumns.TOUCH_ICON字段 values.put(Browser.BookmarkColumns.TOUCH_ICON, os.toByteArray())
DBUtil.update(....)
//调用更新或者插入到数据库的方法
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)