有时候咱们想把图片存入到数据库中,尽管这不是一种明智的选择,但有时候仍是不得以会用到,下面说说将图片转换成byte[]数组存入到数据库中去,并从数据库中取出来转换成图像显示出来。 java
首先,咱们要把图片存入到数据库中,首先要建立一个数据库, 以下所示: android
package com.android.test; import java.io.ByteArrayOutputStream; import android.content.ContentResolver; import android.content.ContentValues; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.graphics.Bitmap; import android.graphics.Bitmap.CompressFormat; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.provider.BaseColumns; public class PictureDatabase extends SQLiteOpenHelper { //数据库的字段 public static class PictureColumns implements BaseColumns { public static final String PICTURE = "picture"; } private Context mContext; //数据库名 private static final String DATABASE_NAME = "picture.db"; //数据库版本号 private static final int DATABASE_Version = 1; //表名 private static final String TABLE_NAME = "picture"; //建立数据库 public PictureDatabase (Context context) { super(context, DATABASE_NAME, null, DATABASE_Version); this.mContext = context; } //建立表并初始化表 @Override public void onCreate (SQLiteDatabase db) { String sql = "Create table " + TABLE_NAME + "(" + BaseColumns._ID + " integer primary key autoincrement," + PictureColumns.PICTURE + " blob not null);"; db.execSQL(sql); //初始化 initDataBase(db,mContext); } //将转换后的图片存入到数据库中 private void initDataBase (SQLiteDatabase db, Context context) { Drawable drawable = context.getResources().getDrawable(R.drawable.test_icon_resizer); ContentValues cv = new ContentValues(); cv.put(PictureColumns.PICTURE, getPicture(drawable)); db.insert(TABLE_NAME, null, cv); } //将drawable转换成能够用来存储的byte[]类型 private byte[] getPicture(Drawable drawable) { if(drawable == null) { return null; } BitmapDrawable bd = (BitmapDrawable) drawable; Bitmap bitmap = bd.getBitmap(); ByteArrayOutputStream os = new ByteArrayOutputStream(); bitmap.compress(CompressFormat.PNG, 100, os); return os.toByteArray(); } //更新数据库 @Override public void onUpgrade (SQLiteDatabase db, int oldVersion, int newVersion) { String sql = " DROP TABLE IF EXISTS " + TABLE_NAME; db.execSQL(sql); onCreate(db); } }