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

1.从资源中获取Bitmap对象

1 Resources res =getResources();2 Bitmap bmp = BitmapFactory.decodeResource(res, R.drawable.icon);

2.把图片转换成字节

1 public byte[] img(intid)2 {3 ByteArrayOutputStream baos = newByteArrayOutputStream();4 Bitmap bitmap =((BitmapDrawable) getResources().getDrawable(id)).getBitmap();5 bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);6 returnbaos.toByteArray();7 }

3.在数据库中插入图片

//在数据库创建时,图片字段的数据类型存储为 BLOB数据库插入操作

public voidonCreate(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= newContentValues();

cv.put(IMAGE, img);long result = db.insert(TB_NAME, null, cv);returnresult;

}

4.获取存入数据库的图片(Bitmap)

public Bitmap getBmp(intposition)

{

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);returnbmpout;

}

//imgView.setImageBitmap(bm);

5.转换获取的图片(Bitmap)为Drawable

1 publicDrawable chage_to_drawable(Bitmap bp)2 {3 //因为BtimapDrawable是Drawable的子类,最终直接使用bd对象即可。

4 Bitmap bm=bp;5 BitmapDrawable bd= newBitmapDrawable(getResource(), bm);6 returnbd;7 }

安卓 mysql读取图片路径_android开发之数据库存取图片相关推荐

  1. 安卓读取mysql数据库文件路径_Android开发实现读取assets目录下db文件的方法示例...

    本文实例讲述了Android开发实现读取assets目录下db文件的方法.分享给大家供大家参考,具体如下: 最近准备打算写一个关于天气预报的app,偶然的机会在一大神的博客上看到了一个获取天气的api ...

  2. 从mysql读取图片_如何从sql数据库内读取图片

    privatevoidSHOW(){MemoryStreamstream=newMemoryStream();byte[]buffByte=null;stringsqlstr="select ...

  3. c语言使用小技巧之读取图片路径和label

    主要是我记性不好 记下这些常用的以免自己忘记. 1. 每个图片路径后面跟一个label 那么读取方式为:  fstream fin; fin.open("ss.txt", ios: ...

  4. php mysql存图片路径_PHP 批量下传图片 怎么保存路径到mysql

    PHP 批量上传图片 如何保存路径到mysql 在网上找到一个PHP+FLASH 的批量上传图片的程序 但是我想把图片的路径 取出来 存入MYSQL数据库中 PHP代码如下 PHP code0) { ...

  5. 安卓打开java文件管理器_Android开发之简单文件管理器实现方法

    本文实例讲述了Android开发之简单文件管理器实现方法.分享给大家供大家参考,具体如下: 这里运用Java I/O.ListActivity.Dialog.Bitmap等实现简单文件管理器,可以查看 ...

  6. js 读取图片路径并预览图片

    写一个input type为file类型的 格式接受为图片格式, 当选择好之后,获取这个file文件.然后转换为base64格式,将图片的src替换. var reads = new FileRead ...

  7. 安卓网页html/图片查看器开发——张泽华老师的些许错误

    1.在Activity中开发界面,一个url 输入框.一个确定查看按钮.一个ImageView或者TextView. html的界面Activity代码 <LinearLayout xmlns: ...

  8. c++ mysql 存储图片路径_3.用ADO实现图片在数据库中存储

    在网上看到了不少介绍 VB 如何在 SQL SERVER 中存取图片数据的文章. 经自己实现后,最终把心得拿出来和大家分享. 经 GOOGLE 搜索,网上的对数据库图片进行存储的文章,绝大部分是来自一 ...

  9. 小米手机无法读取图片路径的问题

    今天在项目中测试提了一个小米手机更换头像异常的问题,同事说他没找到原因,经过查看发现是读不到相册目录文件所对应的路径,其他手机和小米手机获得的源数据分别如下: Intent { dat=content ...

最新文章

  1. python websocket server 解决中文乱码
  2. 不能兼顾速度与精度,STOC 2021最佳论文揭示梯度下降复杂度理论
  3. [BZOJ4452] Export Estimate
  4. 关于软件公司如何进行知识分享的一些讨论
  5. jQuery length 和 size()区别
  6. OGRE分析之设计模式
  7. 谷歌浏览器如何将繁体字设置成中文?
  8. java gbk汉字 10进制,用java程序将GBK字符转成UTF-8编码格式
  9. JavaEE学习03--Servlet
  10. Android 动画 Kotlin 教程
  11. RUBi: Reducing Unimodal Biases in Visual Question Answering
  12. burst传输 - 理解
  13. Python基础学习(2)基本数据类型、三元运算、深浅拷贝、函数式编程、参数、变量、lambda表达式、python内置函数、文件处理、上下文管理、递归、命名空间、闭包
  14. ES使用Ngram分词器实现wildcard高性能替代方案
  15. dpdk发送RST报文(一)—— 构建RST包
  16. 2021年中级Java面试题
  17. C++websocket使用总结
  18. [MEGA DEAL] HyperCam 5:家庭版(50%)
  19. 中华成语词典 v1.60.5 官方
  20. 前端应该了解的直播知识

热门文章

  1. 2016ACM/ICPC亚洲区大连站题解
  2. UVA10800 Not That Kind of Graph【模拟+绘图】
  3. CCF NOI1042 发奖学金
  4. CCF201409-3 字符串匹配(解法二)(100分)(废除!!!)
  5. 卷积、卷积矩阵(Convolution matrix)与核(Kernel)
  6. Python 格式化输出 —— 小数转化为百分数
  7. 100 以内的数的研究
  8. theano 编程细节
  9. mybatis plus springboot test_跟我学Springboot开发后端管理系统3:Mybatis-Plus实战2
  10. win7向虚拟机linux传文件,如何实现主机windows与虚拟机liunx之间互传文件