如何将图片存入数据库中

前两天有人在校论坛上问过,我搜了些相关信息,然后自己总结了一个做法,记录如下,以备日后使用

 

1.将图片转化为byte数组
2.将byte数组放入contentvalues
3.执行数据库的insert操作,将contentvalues里面的值存入sqlite
代码大致如下:
//转换
Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
         ByteArrayOutputStream baos = new ByteArrayOutputStream();    
         bm.compress(Bitmap.CompressFormat.PNG, 100, baos);    
         byte[] result = baos.toByteArray();  
//装入
ContentValues values = new ContentValues();
values.put("image", result);
//插入数据库
db.insert("image_info", "image", values);

Android中Bitmap, Drawable, Byte之间的转化

1.  Bitmap 转化为 byte
ByteArrayOutputStream out = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
byte[] array= out.toByteArray();

2. byte转化为bitmap
final ContentResolver contentResolver = context.getContentResolver();
final PackageManager manager = context.getPackageManager();
final Cursor c = contentResolver.query(uri, null, null, null, null);
final int icon3DIndex = c.getColumnIndexOrThrow(ColumnName);
byte[] data = c.getBlob(icon3DIndex);
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);

3. bitmap转化为Drawable
Drawable drawable = new FastBitmapDrawable(bitmap);
...

4. Drawable转化为bitmap
a. BitmapDrawable, FastBitmapDrawable直接用getBitmap
b. 其他类型的Drawable用Canvas画到一个bitmap上
      Canvas canvas = new Canvas(bitmap)
      drawable.draw(canvas);

 

你可能感兴趣的:(数据库,sqlite,manager,image,null,byte)