zoukankan      html  css  js  c++  java
  • android sqlite 图片保存和读出

    package com.yiyiweixiao;
    
    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
    import android.database.sqlite.SQLiteDatabase.CursorFactory;
    
    public class MySQLiteOpenHelper extends SQLiteOpenHelper {
    // 重写构造方法
    public MySQLiteOpenHelper(Context context, String name,
    CursorFactory cursor, int version) {
    super(context, name, cursor, version);
    }
    
    // 创建数据库的方法
    public void onCreate(SQLiteDatabase db) {
    // 创建一个数据库,表名:imagetable,字段:_id、image。
    db.execSQL("CREATE TABLE imagetable (_id INTEGER PRIMARY KEYAUTOINCREMENT,image BLOB)");
    }
    
    // 更新数据库的方法
    public void onUpgrade(SQLiteDatabase db, int oldVersion, intnewVersion) {
    
    }
    
    }
    
    // 创建助手类的实例
    // CursorFactory的值为null,表示采用默认的工厂类
    mySQLiteOpenHelper = new MySQLiteOpenHelper(this, "saveimage.db",null,1);
    // 创建一个可读写的数据库
    mydb = mySQLiteOpenHelper.getWritableDatabase();
    
    //将图片转化为位图
    Bitmap bitmap1=BitmapFactory.decodeResource(getResources(),R.drawable.erweima);
    
    int size=bitmap1.getWidth()*bitmap1.getHeight()*4;
    //创建一个字节数组输出流,流的大小为size
    ByteArrayOutputStream baos=new ByteArrayOutputStream(size);
    //设置位图的压缩格式,质量为100%,并放入字节数组输出流中bitmap1.compress(Bitmap.CompressFormat.PNG, 100, baos);
    //将字节数组输出流转化为字节数组byte[]
    byte[] imagedata1=baos.toByteArray();
    
    //将字节数组保存到数据库中
    ContentValues cv=new ContentValues();
    cv.put("_id", 1);
    cv.put("image", imagedata1);
    mydb.insert("imagetable", null, cv);
    //关闭字节数组输出流
    baos.close();



    从数据库中查询的方法
    //创建一个指针
    Cursor cur=mydb.query("imagetable", new String[]{"_id","image"},null, null, null, null, null);
    byte[] imagequery=null;
    if(cur.moveToNext()){
    //将Blob数据转化为字节数组imagequery=cur.getBlob(cur.getColumnIndex("image"));
    }
    //将字节数组转化为位图
    Bitmap imagebitmap=BitmapFactory.decodeByteArray(imagequery, 0,imagequery.length);
    iv1=(ImageView) findViewById(R.id.imageView1);
    //将位图显示为图片
    iv1.setImageBitmap(imagebitmap);


  • 相关阅读:
    POJ1995 ZOJ2150 Raising Modulo Numbers【快速模幂】
    POJ3641 UVA11287 HDU1905 Pseudoprime numbers【素数判定+快速模幂】
    ACM题解系列之三:秋田拓哉:《挑战程序设计竞赛》(第2版)
    HDU3257 Hello World!【打印图案+位运算】
    ACM题解系列之二:刘汝佳:《算法竞赛入门经典训练指南》
    UVa10881 Piotr's Ants【模拟】
    POJ1852 UVa10714 Ants【水题】
    剑指Offer——平衡二叉树
    剑指Offer——二叉树的深度
    剑指Offer——数字在排序数组中出现的次数
  • 原文地址:https://www.cnblogs.com/xiaowangba/p/6314355.html
Copyright © 2011-2022 走看看