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