android将图片转换存到数据库再从数据库读取转换成图片实现代码


当前第2页 返回上一页

代码如下:

ByteArrayOutputStream os = new ByteArrayOutputStream();
bitmap.compress(CompressFormat.PNG, 100, os);
return os.toByteArray();

之后将字符数组存入到类型为blob的数据库中去。

代码如下:

ContentValues cv = new ContentValues();
cv.put(PictureColumns.PICTURE, getPicture(drawable));
db.insert(TABLE_NAME, null, cv);

之后在代码中从数据库中取出byte[],然后转换成Drawable,设置图片即可。

代码如下:

代码如下:

package com.android.test;

import java.util.ArrayList;

import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.widget.ImageView;

public class TestPicture extends Activity {

    @Override
    protected void onCreate (Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ImageView iv = new ImageView(this);
        if(getDrawable().size() != 0) {
            iv.setImageDrawable(getDrawable().get(0));
        }
        setContentView(iv);
    }

   
    private ArrayList<Drawable> getDrawable() {
        PictureDatabase pd = new PictureDatabase(this);
        SQLiteDatabase sd = pd.getWritableDatabase();

        ArrayList<Drawable> drawables = new ArrayList<Drawable>();

        //查询数据库
        Cursor c = sd.query("picture", null, null, null, null, null, null);

        //遍历数据
        if(c != null && c.getCount() != 0) {
            while(c.moveToNext()) {
                //获取数据
                byte[] b = c.getBlob(c.getColumnIndexOrThrow(PictureDatabase.PictureColumns.PICTURE));
                //将获取的数据转换成drawable
                Bitmap bitmap = BitmapFactory.decodeByteArray(b, 0, b.length, null);
                BitmapDrawable bitmapDrawable = new BitmapDrawable(bitmap);
                Drawable drawable = bitmapDrawable;
                drawables.add(drawable);
            }
        }
        return drawables;
    }
}

重点注意如何将数据库中取出的byte[]转换成drawable:

代码如下:

Bitmap bitmap = BitmapFactory.decodeByteArray(b, 0, b.length, null);
BitmapDrawable bitmapDrawable = new BitmapDrawable(bitmap);
Drawable drawable = bitmapDrawable;

 

运行效果如下:


标签:SQLite

返回前面的内容

相关阅读 >>

Sqlitestudio打开后如何切换成简体中文Sqlitestudio绿色版中文设置方法介绍

android开发之contentprovider的使用详解

60道硬核python面试题,论面霸是如何炼成的

Sqlite时间戳转时间语句(时间转时间戳)

微软官方sqlhelper类 数据库辅助操作类 font color=red原创font

ubuntu 解决libSqlite3-0依赖的问题(推荐)

rxjava2_flowable_Sqlite_android数据库访问实例

flutter数据库的使用方法

node.js中实现同步操作的3种实现方法

elyse如何激活数据库文件管理系统elyse安装及激活图文教程(附软件下载+激活补丁)

更多相关阅读请进入《Sqlite》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...