原理:图片是二进制文件,所以使用blob类型,将图片转换成字节数组,存储到数据库中。

方法一:

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对象,这里也可以使用rawContentValues values = new ContentValues(); // 写入数据库的Browser.BookmarkColumns.TOUCH_ICON字段
        values.put(Browser.BookmarkColumns.TOUCH_ICON, os.toByteArray()); DBUtil.update(....);//调用更新或者插入到数据库的方法}

方法二:如果数据表入口时一个content:URI

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(....);//调用更新或者插入到数据库的方法
}

从数据库中读取:

byte[] blob = cur.getBlob(cur.getColumnIndex(KEY_IMG));
Bitmap bmp = BitmapFactory.decodeByteArray(blob, 0, blob.length);

转载于:https://www.cnblogs.com/qiengo/archive/2012/05/07/2487499.html

Android save pictrue by SQLiteOpenHelper相关推荐

  1. android的数据存储(3)(LitePal)

    在上一章的SQLiteDatebase来操作数据库好用吗?不同的人有不同的答案,接下来你将接触一个开源库LitePal,它采用了对象关系映射的(ORM)的模式,并将我们平常用到的数据库功能进行封装,使 ...

  2. Android学习羁绊之数据存储

    数据持久化就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,这些数据仍然不会丢失.保存在内存中的数据是处于瞬时状态的,而保存在存储设备中的数据是处于持久状态的,持久化技术 ...

  3. Android数据持久化存储

    Android数据持久化存储共有四种方式,分别是文件存储.SharedPreferences.Sqlite数据库和ContentProvider.在本篇幅中只介绍前面三种存储方式,因为ContentP ...

  4. 《Android 移动应用基础教程(Android Studio)(第2版)》【课本客观题】+【学习通2023春】【参考答案】

    文章目录 超星学习通智能终端软件开发(基于Android Studio环境)章节作业(39) 一 二 三 四 五 六 课本一 课本二 课本三 课本四 课本五 课本六(无) 课本七 课本八 课本九 课本 ...

  5. android数据库isnull,Android中SQLite数据库知识点总结

    SQLite 数据库简介 SQLite 是一个轻量级数据库,它是D. Richard Hipp建立的公有领域项目,在2000年发布了第一个版本.它的设计目标是嵌入式的,而且占用资源非常低,在内存中只需 ...

  6. Android存储方式之SQLite

    前言 SQLite数据库操作在Android开发中非常常用 今天我将带大家全面了解关于SQLite数据库的操作(增.删.查.改) 目录 1. SQLite数据库介绍 SQLite是Android内置的 ...

  7. 构建node.js基础镜像_在Android上构建Node.js应用程序

    构建node.js基础镜像 by Aurélien Giraud 通过AurélienGiraud 在Android上构建Node.js应用程序-第1部分:Termux,Vim和Node.js (Bu ...

  8. Android数据存储之SQLite的操作

    Android作为一个应用在移动设备上的操作系统,自然也就少不了数据的存储.然而SQLite作为一个轻型的关系型数据库,基于其轻量.跨平台.多语言接口及安全性等诸多因数考虑,因而Android较大的数 ...

  9. android SQLite数据库用法图文详解(附源码)

    (转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景 SQLite是嵌入式设备使用的一种轻量型数据库.可以通过执行sql语句对数据库进行操作,android ...

最新文章

  1. au加载默认的输入和输出设备失败_Mac OS X的音频输入输出时如何调整音量
  2. Ubuntu16.04安装ROS kinetic
  3. Shell(5)——(())、let、array的查看方式
  4. nginx php iconv,Nginx +PHP部署一
  5. oracle =1,oracle中的 where 1=1 和where 1 !=1
  6. 【干货】JS版汉字与拼音互转终极方案,附简单的JS拼音输入法
  7. 批量重命名文件和批量修改文件扩展名
  8. “金嗓子”宣布退市!曾因罗纳尔多代言争议爆红,广告词家喻户晓…
  9. 余弦函数导数推导过程_反三角函数的导数的推导过程
  10. HDU5620 KK's Steel【菲波拉契数列+水题】
  11. python中的常量_深入理解Python中的内置常量
  12. HTML5 Web Storage
  13. ixp协议服务器,ipx协议中的“内部网络号”是什么意思?
  14. Xpose实战一:来,让我们任性登录,替换掉它的登录验证
  15. Mac 清理垃圾工具 Clean My Mac破解版
  16. c语言写字机器人,写字机器人(基于STM32简易实现)
  17. i.MX RT1064-EVK开发板中基于LPC4322JET100的Freelink调试电路简介
  18. qq邮箱邮件被拦截如何找回的方法
  19. 网站建设凸显效果的配色原则
  20. 卸载oracle方法

热门文章

  1. 用框图说明计算机控制系统,计算机控制系统试题
  2. Python笔记-相关性分析(连续变量和分类变量)
  3. Linux笔记-bash中解决if语句中command not found问题
  4. Python笔记-U2解锁手机九宫格
  5. Nginx笔记-反向代理中配置WebSocket及设置超时
  6. C++工作笔记-作用域的巧妙使用,释放堆区创建的资源
  7. 认识死锁之死锁的基本概念
  8. Qt工作笔记-QCustomPlot让曲线动起来
  9. java中对象清空值_对象的引用和清除_Java语言程
  10. 北京市计算机专修学院,北京计算机专修学院:三大热门专业