当前位置: 首页 > 编程笔记 >

Android利用LitePal操作数据库存取图片

何安宜
2023-03-14
本文向大家介绍Android利用LitePal操作数据库存取图片,包括了Android利用LitePal操作数据库存取图片的使用技巧和注意事项,需要的朋友参考一下

Android数据库中存取图片通常使用两种方式,一种是保存图片所在路径,二是将图片以二进制的形式存储(sqlite3支持BLOB数据类型)。对于两种方法的使用,好像第二种方法不如第一种方法更受程序员欢迎,他们认为,在很多数据库语言里,处理大字段都是不容易的,像图片这样的文件放在数据库里会有问题:对数据库的读写速度永远赶不上文件系统的处理速度,使数据库变得巨大;但也有很多人认为像图片这样的数据存放在数据库中也有好处:易于备份,且备份速度绝对比备份文件快,比较容易数据迁移等等。其实这两种方法都有优缺点,具体使用哪种方法要视情况而定。个人倾向于使用数据库存取图片,因为个人认为存到数据库里的数据不会因外部数据的变化而丢失改变,比如你拍照获得一张图片,如果是将路径存到数据库,当这张照片被删除之后,下次读取数据库就得不到想要的结果了。接下来详细介绍数据库存取图片的方法:

1、把图片转换为字节

private byte[]img(Bitmap bitmap){ 
    ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos); 
    return baos.toByteArray(); 
  } 

2、把图片存储到数据库

假设获取的图片为bitmap,数据库有一张User表,存储的属性为byte[]headshot

public class User extends DataSupport { 
 
private byte[] headshot;//头像 
 
public User(){ 
super(); 
} 
 
public User(byte[]headshot){ 
super(); 
this.headshot=headshot; 
} 
public byte[] getHeadshot() { 
    return headshot; 
  } 
 
  public void setHeadshot(byte[] headshot) { 
    this.headshot = headshot; 
  } 
} 

对图片进行保存

//获取到图片 
Bitmap headShot=BitmapFactory.decodeFile(imagePath); 
//把图片转换字节流 
byte[]images=img(headShot); 
//找到用户 
User users=DataSupport.findFirst(User.class); 
//保存 
users.setHeadshot(images); 
users.save(); 

4、获取图片

User mUser=DataSupport.findFrist(User.class); 
byte[]images=mUser.getHeadshot(); 
Bitmap bitmap=BitmapFactory.decodeByteArray(images,0,images.length); 

好了,到此完成对数据库存取图片。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍Android利用Intent实现读取图片操作,包括了Android利用Intent实现读取图片操作的使用技巧和注意事项,需要的朋友参考一下 本文实例演示如何从图库(Gallery)中读取图像并用ImageView将它显示出来,供大家参考,具体内容如下 运行本示例前,需要先利用相机模拟拍摄一些图片到图库中。 1、运行截图    2、主要设计步骤 (1)添加ch1203_ReadGal

  • 数据库的操作是每个phpweb框架的核心功能,我们提供数据库数据库的标准调用模式为: 你可以执行严格模式,也就是左边的那条线,Controller->Service->Dao->Model->DB,也可以走简单模式 Controller->Model->DB。个人根据自己的需求,走标准麻烦些(几乎所有的机构和系统都是这样^_^), 但是扩展性会好些,但是使用简单模式开发效率就会高些,性能会好些,但

  • 这一小节是对数据库操作做一个简单的封装,不涉及复杂的事务操作等。 我选用了Sql2o作为底层数据库框架作为支持,它的简洁易用性让我刮目相看,后面我们也会写如何实现一个ORM框架。 /** * 数据库支持 * @author biezhi * */ public final class MarioDb { private static Sql2o sql2o = null;

  • php 扩展 需要开启 pdo、pdo_mysql 扩展 可以通过以下2种方式获取数据操作对象 : 第一种 : db() 函数 通过全局的 db() 函数可以迅速的获取数据操作对象,函数参数: db($tableName, $configName = 'db') $tableName 表名称 $configName 全局配置中对应的键名称 【选填 默认 db】 示例代码 <?php class i

  • 通过python操作数据库的行为,除了能够完成前面两讲中的操作之外(当然,那是比较常用的),其实任何对数据库进行的操作,都能够通过python-mysqldb来实现。 建立数据库 在《用python操作数据库(1)》中,我是通过mysql>写SQL语句,建立了一个名字叫做qiwsirtest的数据库,然后用下面的方式跟这个数据库连接 >>> import MySQLdb >>> conn = My

  • 回顾一下已有的战果:(1)连接数据库;(2)建立指针;(3)通过指针插入记录;(4)提交将插入结果保存到数据库。在交互模式中,先温故,再知新。 >>> #导入模块 >>> import MySQLdb >>> #连接数据库 >>> conn = MySQLdb.connect(host="localhost",user="root",passwd="123123",db="qiwsirtest"