Android save pictrue by SQLiteOpenHelper
原理:图片是二进制文件,所以使用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相关推荐
- android的数据存储(3)(LitePal)
在上一章的SQLiteDatebase来操作数据库好用吗?不同的人有不同的答案,接下来你将接触一个开源库LitePal,它采用了对象关系映射的(ORM)的模式,并将我们平常用到的数据库功能进行封装,使 ...
- Android学习羁绊之数据存储
数据持久化就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,这些数据仍然不会丢失.保存在内存中的数据是处于瞬时状态的,而保存在存储设备中的数据是处于持久状态的,持久化技术 ...
- Android数据持久化存储
Android数据持久化存储共有四种方式,分别是文件存储.SharedPreferences.Sqlite数据库和ContentProvider.在本篇幅中只介绍前面三种存储方式,因为ContentP ...
- 《Android 移动应用基础教程(Android Studio)(第2版)》【课本客观题】+【学习通2023春】【参考答案】
文章目录 超星学习通智能终端软件开发(基于Android Studio环境)章节作业(39) 一 二 三 四 五 六 课本一 课本二 课本三 课本四 课本五 课本六(无) 课本七 课本八 课本九 课本 ...
- android数据库isnull,Android中SQLite数据库知识点总结
SQLite 数据库简介 SQLite 是一个轻量级数据库,它是D. Richard Hipp建立的公有领域项目,在2000年发布了第一个版本.它的设计目标是嵌入式的,而且占用资源非常低,在内存中只需 ...
- Android存储方式之SQLite
前言 SQLite数据库操作在Android开发中非常常用 今天我将带大家全面了解关于SQLite数据库的操作(增.删.查.改) 目录 1. SQLite数据库介绍 SQLite是Android内置的 ...
- 构建node.js基础镜像_在Android上构建Node.js应用程序
构建node.js基础镜像 by Aurélien Giraud 通过AurélienGiraud 在Android上构建Node.js应用程序-第1部分:Termux,Vim和Node.js (Bu ...
- Android数据存储之SQLite的操作
Android作为一个应用在移动设备上的操作系统,自然也就少不了数据的存储.然而SQLite作为一个轻型的关系型数据库,基于其轻量.跨平台.多语言接口及安全性等诸多因数考虑,因而Android较大的数 ...
- android SQLite数据库用法图文详解(附源码)
(转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景 SQLite是嵌入式设备使用的一种轻量型数据库.可以通过执行sql语句对数据库进行操作,android ...
最新文章
- au加载默认的输入和输出设备失败_Mac OS X的音频输入输出时如何调整音量
- Ubuntu16.04安装ROS kinetic
- Shell(5)——(())、let、array的查看方式
- nginx php iconv,Nginx +PHP部署一
- oracle =1,oracle中的 where 1=1 和where 1 !=1
- 【干货】JS版汉字与拼音互转终极方案,附简单的JS拼音输入法
- 批量重命名文件和批量修改文件扩展名
- “金嗓子”宣布退市!曾因罗纳尔多代言争议爆红,广告词家喻户晓…
- 余弦函数导数推导过程_反三角函数的导数的推导过程
- HDU5620 KK's Steel【菲波拉契数列+水题】
- python中的常量_深入理解Python中的内置常量
- HTML5 Web Storage
- ixp协议服务器,ipx协议中的“内部网络号”是什么意思?
- Xpose实战一:来,让我们任性登录,替换掉它的登录验证
- Mac 清理垃圾工具 Clean My Mac破解版
- c语言写字机器人,写字机器人(基于STM32简易实现)
- i.MX RT1064-EVK开发板中基于LPC4322JET100的Freelink调试电路简介
- qq邮箱邮件被拦截如何找回的方法
- 网站建设凸显效果的配色原则
- 卸载oracle方法