android将图片转换存到数据库再从数据库读取转换成图片实现代码
首先,我们要把图片存入到数据库中,首先要创建一个数据库, 如下所示: 代码如下:package com.android.test; import java.io.ByteArrayOutputStream; import android.content.ContentResolver;import android.content.ContentValues;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenH 在Android开发中,有时我们需要将图片数据存储到数据库中,然后根据需要从数据库中读取并重新转换为图片。这个过程涉及到对图片的处理、SQLite数据库操作以及Android系统的ContentProvider和ContentValues。以下是一个实现这一功能的具体步骤和相关知识点: 1. **创建数据库**: 我们需要创建一个SQLite数据库来存储图片。这通常通过继承`SQLiteOpenHelper`类来完成。在`PictureDatabase`类中,我们定义了数据库名(`DATABASE_NAME`)和版本号(`DATABASE_Version`)。`onCreate()`方法用于创建表,而`onUpgrade()`则处理数据库升级。 2. **定义数据库表结构**: 在`PictureDatabase`类中,我们定义了一个内部类`PictureColumns`,它实现了`BaseColumns`接口,这是为了遵循Android的约定。`PICTURE`字段用于存储图片的二进制数据,类型为`BLOB`。 3. **创建表**: 在`onCreate()`方法中,我们创建了一个名为`picture`的表,其中包含两个字段:`_ID`(主键,自动递增)和`PICTURE`(图片数据)。 4. **将图片转换为字节数组**: `getPicture(Drawable drawable)`方法将Android的`Drawable`对象转换为`byte[]`,以便存储到数据库。这通常是通过将`Drawable`转换为`Bitmap`,然后使用`ByteArrayOutputStream`将`Bitmap`压缩为JPEG或PNG格式完成的。在示例代码中,`CompressFormat.JPEG`可能被用作压缩格式,以减少存储空间。 5. **存储图片到数据库**: 在`initDataBase(SQLiteDatabase db, Context context)`方法中,我们从资源文件加载一个`Drawable`,然后使用`ContentValues`来存储`PICTURE`字段的值,这个值是通过调用`getPicture()`方法获取的`byte[]`。使用`db.insert()`将这些值插入到表中。 6. **从数据库读取图片**: 读取图片的过程包括查询数据库,获取`PICTURE`字段的`byte[]`,然后将其转换回`Bitmap`,最后可能需要将`Bitmap`转换回`Drawable`。这可以通过执行SQL查询,如`SELECT * FROM picture WHERE _ID = ?`,然后使用`Cursor`对象来获取结果,并调用`getBlob()`方法来获取图片数据。之后,可以通过`BitmapFactory`的`decodeByteArray()`方法将字节数组还原为`Bitmap`。 7. **使用ContentResolver和ContentValues**: 虽然示例代码没有直接使用`ContentResolver`和`ContentValues`,但在实际应用中,你可能想要通过ContentProvider来访问数据库。`ContentResolver`允许你在应用程序的组件之间共享数据,而`ContentValues`则用于封装要插入或更新的数据。 8. **内存和性能考虑**: 存储大图片到数据库可能会占用大量空间,而且可能导致性能问题。因此,建议只存储缩略图或经过压缩的图片,或者使用文件系统存储图片,仅在数据库中存储文件路径。 9. **优化**: 为了提高性能,可以考虑使用`BitmapFactory.Options`来控制解码时的内存使用,例如设置`inSampleSize`来降低图片分辨率。 总结来说,这个过程涉及到了Android的SQLite数据库操作,图片处理,以及数据存储和检索的策略。通过理解这些知识点,开发者可以有效地在Android应用中管理图片数据。



















- 粉丝: 3
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 软件工会会计管理系统软件(1).doc
- 中国移动通信集团安徽有限公司销售经理工作手册(1).doc
- 档案信息化建设之应用系统建设(1).docx
- 基于RFID的监狱物联网方案(1).pptx
- excel公式和函数(1).ppt
- 互联网金融下小微企业融资的风险与对策(1).docx
- 第三章信息的编程加工和智能化加工讲课文档(1).ppt
- 1+X证书背景下高职计算机专业三教改革探究(1).docx
- 某全程电子商务平台应用试点重庆市信息化试点项目申请建设可行性研究书(1).doc
- 前端开发工程师笔试题篇(1).docx
- 基于大数据挖掘的用电行为分析(1).docx
- 基于云计算的会计信息化案例分析(1).docx
- 电子商务对税收消极作用以及决策(1).docx
- 计算机专业英语教程课文翻译-Chapter-Two-SectionB(1).docx
- 基于51单片机超声波测距仪设计(2)(1).docx
- 网站转让合同书(1).docx


