Как выбрать изображение из внутреннего хранилища и вставить его в SQLite?


Когда пользователь нажимает кнопку в моем приложении, он должен иметь возможность выбрать изображение из внутренней памяти (sd-карты или памяти планшета/телефона). Затем я хочу, чтобы этот образ был сохранен в базе данных SQLite.

Итак, есть три вопроса:

  • Как я могу показать пользователю галерею или проводник, чтобы он мог перемещаться и выбирать изображение?
  • как приложение узнает, какое изображение было выбрано?
  • как мое приложение может хранить изображение в базе данных (BLOB-данные)?
1 2

1 ответ:

Хорошо, как уже отметил Лингвистон. Вы можете реализовать выбор изображения из галереи из здесь.

Что касается хранения изображения, я собираюсь немного отредактировать код в ссылке.

Вместо этого:

ImageView imageView = (ImageView) findViewById(R.id.imgView);
        imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath));

Я собираюсь сохранить выбранное изображение в Bitmap.

ImageView imageView = (ImageView) findViewById(R.id.imgView);
Bitmap mBitmap = BitmapFactory.decodeFile(picturePath);
        imageView.setImageBitmap(mBitmap);

Теперь для хранения в качестве типа BLOB в android вам нужно преобразовать растровое изображение в байты, а затем сохранить массив байтов в sqlite база данных.

                ByteArrayOutputStream stream = new ByteArrayOutputStream();
                mBitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
                byte[] imageInByte = stream.toByteArray();
Теперь вам просто нужно передать imageInByte для хранения в базе данных SQLite.

В качестве примечания, оба эти ответа уже были доступны по всему интернету и StackOverflow по отдельности, вам просто нужно было сложить 2 и 2 вместе. Пожалуйста, попробуйте тщательно поискать, прежде чем отправлять вопрос.