Android 数据库存取图片

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

一、数据库创建和存取方法:

在数据库创建时,图片字段的数据类型存储为 BLOB数据库插入操作
public void onCreate(SQLiteDatabase db)
{
String sql = "create table " + TB_NAME + " ( " + ID + " integer primary key , " + IMAGE + " BLOB ) ";
db.execSQL(sql);
}

将图片一字节形式存储数据库读取操作
public long insert(byte[] img) 
{
SQLiteDatabase db = getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(IMAGE, img);
long result = db.insert(TB_NAME, null, cv);
return result;
}


得到的图片是Bitmap类型,参数position 点击图片在ListView、GridView等内的位置 ,可根据需要编写代码二
public Bitmap getBmp(int position) 
{
SQLiteDatabase db = getReadableDatabase();
Cursor cursor = select(TB_NAME);
cursor.moveToPosition(position);
byte[] in = cursor.getBlob(cursor.getColumnIndex(IMAGE));
Bitmap bmpout = BitmapFactory.decodeByteArray(in, 0, in.length);
return bmpout;
}

二、将图片转化为 byte[]//参数id为图片资源 (R.drawable.img)
public byte[] img(int id)
{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
Bitmap bitmap = ((BitmapDrawable) getResources().getDrawable(id)).getBitmap();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
return baos.toByteArray();

}

转载请注明出处:http://blog.csdn.net/zjbpku/article/details/8877524

用sqlite存储Android手机图片,再从数据库读出图片显示。

最近做毕业设计时需要做做个上传图片的demo,所以写了此段代码。
  • a578977626
  • a578977626
  • 2015年03月22日 17:56
  • 2015

Android开发——利用数据库存储图片

keyWord: Blob,database Android数据库中存取图片通常使用两种方式,一种是保存图片所在路径,二是将图片以二进制的形式存储(sqlite ...
  • u010778159
  • u010778159
  • 2015年03月13日 19:39
  • 807

Android入门——数据存储之SQLite存储读取图片

SQLite保存图片并读取图片显示到View上。
  • CrazyMo_
  • CrazyMo_
  • 2017年01月11日 18:28
  • 2958

Android 数据库中读取图片名称加载相应的资源

android的开发中会遇到这么一种需求,就是把图片存储到本地,每次加载的时候通过保存的图片的名称加载图片,或者利用请求到的/存储数据库存储的名称去加载图片 。开始我把数据放在了assets中,开始我...
  • u012153184
  • u012153184
  • 2016年11月04日 16:52
  • 739

Android中保存图片到本地功能实现

文章转载自http://blog.csdn.net/ccpat/article/details/45314175  感谢原作者 本文描述将一个Bitmap对象保存为一个图片文件的主要步骤。保存的图...
  • Samuel__Liu
  • Samuel__Liu
  • 2016年02月25日 23:56
  • 25337

Android中将图片保存到数据库中

最近在开发中,需要用到将图片保存到数据库中,然后再把数据库中的数据拿出来进行显示。后面查了下一些方法,主要这样的实现就有两种思路: 方法一:将图片解析为二进制的数据,然后放入到数据库中的一种BLOD...
  • Cs_hnu_scw
  • Cs_hnu_scw
  • 2017年06月30日 19:34
  • 1399

Android 通过手机文件夹路径,得到 某张 照片 的 详细/详情/信息的获取

Main import android.annotation.SuppressLint; import android.app.Activity; import android.content....
  • a2241076850
  • a2241076850
  • 2016年11月25日 22:54
  • 1392

关于图片或者文件在数据库的存储方式归纳

http://www.cnblogs.com/wangtao_20/p/3440570.html 商品图片,用户上传的头像,其他方面的图片。目前业界存储图片有两种做法: 1、  把图片直接以二...
  • haluoluo211
  • haluoluo211
  • 2016年07月31日 19:45
  • 23972

向数据库存储读取图片方法总结

1.首先创建一个数据表SaveImageTest ImageID:uniqueidentifier    主键 ImageType:varchar(32)    图片类型 ImageName:v...
  • baobaolaogong
  • baobaolaogong
  • 2012年05月17日 11:33
  • 15823

向数据库中存取图片(BITMAP)

向数据库中存取图片(BITMAP)   测试环境:windows xp2 vc6.0 access2003/sql2000     当前时间所限就先把关于BMP文件的操作总结了...
  • wwq444968579
  • wwq444968579
  • 2014年11月06日 18:43
  • 468
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android 数据库存取图片
举报原因:
原因补充:

(最多只允许输入30个字)