Добавление изображения в Sqlite -android-

-1

Как я могу добавить изображение в базу данных sqlite, а затем получить? используя Content Provider Изображение 91440

* Я хочу получить этот образ, который я загрузил из галереи, сделанной камерой, для хранения в базе данных, чтобы использовать ее в других действиях *

Теги:

2 ответа

0
Лучший ответ

Вы можете сохранить путь к изображению в базе данных. Затем в следующей операции извлеките его, и если файл существует, отобразите его...

Когда пользователь выбрал изображение из галереи, я думаю, вы получаете URI из onActivityResult(). Вам просто нужно получить путь к нему, используя следующий код:

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);
}
  • 0
    Или используйте некоторую кодировку, например Base64, но ответ Анто намного лучше.
  • 1
    @AndriyOmelchenko - не очень хорошая идея сохранить код base64 изображения, представьте 5000 символов для одного изображения?
Показать ещё 4 комментария
-1

Изображения сохраняются как BLOB в Sqlitedatabase.

Для сохранения изображения в базе данных

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);
}
  • 1
    По крайней мере, дайте вескую причину, прежде чем голосовать за кого-то.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню