Android: изображение, загруженное из двоичных данных в БД, не отображается

Я разрабатываю приложение, в котором пользователь может загрузить изображение как часть короткого сообщения в блоге; это изображение затем кодируется в base64 и сохраняется в базе данных MS SQL Server. Когда я пытаюсь просмотреть изображение позже, оно не отображается. У меня есть заполнитель в ImageView, который исчезает, когда изображение должно быть загружено, но на самом деле изображение не отображается.

Кодирование изображения:

ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
img.compress(Bitmap.CompressFormat.JPEG, 35, byteArrayOutputStream);
byte[] byteArray = byteArrayOutputStream.toByteArray();
String image = Base64.encodeToString(byteArray, Base64.DEFAULT);

Расшифровка образа и помещение в ImageView:

byte[] decodeString = Base64.decode(blog.getImage(), Base64.DEFAULT);
Bitmap decodebitmap = BitmapFactory.decodeByteArray(decodeString, 0, decodeString.length);
image1.setImageBitmap(decodebitmap);

Любая помощь в том, где я ошибаюсь, очень ценится.

this image is then encoded to binary data ?? Что бы это было?
greenapps 18.04.2018 09:38

@greenapps Он кодирует в Base64

Yellowman94 18.04.2018 17:17

Итак, вы вызываете двоичные данные строк в формате base64? Довольно странно. Я бы сказал, это больше текста.

greenapps 18.04.2018 17:19

@greenapps Насколько я понимаю, строка base64 представляет собой двоичные данные изображения, отсюда и моя формулировка :)

Yellowman94 18.04.2018 17:23

Неправильный. Вместо этого вы должны сказать this image is then base64 encoded.

greenapps 18.04.2018 17:26

@greenapps Достаточно честно

Yellowman94 18.04.2018 17:32
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
6
81
1

Ответы 1

Используйте эту функцию, чтобы получить Bitmap из base64

public static Bitmap decodeBase64(String input)
    {
        byte[] decodedBytes = Base64.decode(input, 0);
        return BitmapFactory.decodeByteArray(decodedBytes, 0, decodedBytes.length);
    }

Эта функция установит вышеупомянутое растровое изображение на ImageView.

private void setImage(ImageView iv,Bitmap bitmap)
{
    iv.setImageBitmap(bitmap);
}

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