将图像添加到Sqlite -android-

时间:2016-10-17 16:33:38

标签: android sqlite

如何将图像添加到sqlite数据库然后检索?使用内容提供商 enter image description here

*我希望从相机拍摄的照片中加载此图像,以存储在数据库中,以便在其他活动中使用*

2 个答案:

答案 0 :(得分:0)

您可以保存数据库中图像的路径。然后在下一个活动中,检索它,如果文件存在则显示它......

当用户从图库中选择图片时,我猜您会从onActivityResult()获取URI。你只需要使用像这样的代码获取它的路径:

private String getRealPathFromURI(Uri contentUri) {
    String[] store = { MediaStore.Images.Media.DATA };
    CursorLoader loader = new CursorLoader(mContext, contentUri, store, null, null, null);
    Cursor cursor = loader.loadInBackground();
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    String result = cursor.getString(column_index);
    if (cursor != null ) {
    cursor.close();
    }
    return result;
}

只需按照您希望的方式保存数据库中的路径即可。

稍后,尝试获取该文件。如果文件存在,请更新您的ImageView

File file = new File(savedPath);
if(file.exists){
  // load image in your imageView
  Bitmap mBitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
  yourImageView.setImageBitmap(mBitmap);
}

答案 1 :(得分:-1)

图像在Sqlitedatabase中存储为BLOB。

用于将图像保存到数据库

ContentValues values = new ContentValues();
    values.put(KEY_NAME, contact.getItemname());
    values.put(KEY_DESCRIPTION, contact.getDescription());
     Log.i("","Adding image of Type Bitmap"+contact.getImage());
     if(contact.getImage()!=null) {
       values.put(KEY_IMAGE, Utility.getBytes(contact.getImage()));
     }

getBytes(Bitmap)的位置是:

public static byte[] getBytes(Bitmap bitmap) {
    ByteArrayOutputStream stream = new ByteArrayOutputStream();
    bitmap.compress(CompressFormat.PNG, 0, stream);
    return stream.toByteArray();
}

从数据库中提取图像时:

    if(cursor.getBlob(3)!=null)
    {
          contact.setImage(Utility.getPhoto(cursor.getBlob(3));
    }
    else
    {
         contact.setImage(null);
     }

getPhoto(BLOB)将是:

// convert from byte array to bitmap
public static Bitmap getPhoto(byte[] image) {
    return BitmapFactory.decodeByteArray(image, 0, image.length);
}