Как получить растровое изображение из imagebutton

У меня есть ImageButton, когда щелкаю по нему, откроется галерея, чтобы выбрать изображение и отправить bitmap обратно, чтобы показать на этом ImageButton. Но мне нужно получить bitmap, который был показан на этом ImageButton, а затем сохранить его в базе данных как byte[].

когда вам нужно выбрать изображение, почему бы не использовать выбранное изображение вместо того, чтобы нажимать кнопку изображения?

Vivek Mishra 26.10.2018 06:37

просто сохраните растровое изображение в некоторой переменной, когда вы установите его в imagebutton. И когда вам это нужно, просто используйте переменную

Vladyslav Matviienko 26.10.2018 06:46
1
2
960
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Пытаться

Bitmap bitmap = ((BitmapDrawable)imageButton.getDrawable()).getBitmap();
Ответ принят как подходящий

сначала возьмите bitmap от ImgaeButton

Bitmap bitmap = ((BitmapDrawable)imageButton.getDrawable()).getBitmap();

затем конвертируйте этот bitmap в byteArray

ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, outputStream);
byte[] byteArray = outputStream.toByteArray();

Вы можете использовать blob для хранения изображения во внутренней базе данных sqlite android.

*** ниже ответ полностью скопирован из Как сохранить изображение в базе данных SQLite - кредит предоставляется поставщику ответов

public void insertImg (int id, Bitmap img) {

    byte[] data = getBitmapAsByteArray(img); // this is a function

    insertStatement_logo.bindLong(1, id);       
    insertStatement_logo.bindBlob(2, data);

    insertStatement_logo.executeInsert();
    insertStatement_logo.clearBindings() ;

}

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

получить изображение из БД

public Bitmap getImage (int i) {

String qu = "select img  from table where feedid=" + i ;
Cursor cur = db.rawQuery(qu, null);

if (cur.moveToFirst()){
    byte[] imgByte = cur.getBlob(0);
    cur.close();
    return BitmapFactory.decodeByteArray(imgByte, 0, imgByte.length);
}
if (cur != null && !cur.isClosed()) {
    cur.close();
}       

return null ;
} 

Когда вы загружаете изображение из галереи, у вас уже есть ссылка на него URI или у вас есть растровое изображение. Надеюсь, что следующее поможет

Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageUri);

Теперь, если вы хотите получить растровое изображение из imageButton, вы можете использовать

Bitmap bitmap = ((BitmapDrawable)imageButton.getDrawable()).getBitmap();

Обратитесь также к Как получить растровое изображение из URI?, чтобы узнать больше

Другие вопросы по теме