Подтвердить что ты не робот

Как загрузить изображение через байтовый массив с помощью Glide?

У меня есть форма содержимого байта изображения. Но когда я загружаю их через Glide, отображаются сломанные изображения. то, что я делаю, показано ниже.

Glide.with(context)
    .load(imageByteArray)
    .asBitmap()
    .placeholder(R.drawable.ic_broken)
    .into(rowImageView);

imageByteArray успешно преобразуется в растровое изображение без использования скольжения. Таким образом, нет ошибок в массиве байтов изображений.

Пожалуйста, расскажите мне, что мне не хватает?

Также я использую библиотеку Glide com.github.bumptech.glide: glide: 3.6.1 И Android support library com.android.support:support-v13:23.0.1

Edited

Хорошо, это то, что я делаю.

String imageBytes = "HVao14fpmtHSev3OgsrQNsawkFzXNcY3BsfQla6..."

Эта строка, указанная выше, представляет собой байты фактического изображения, которое я получаю от веб-API.

Я преобразовываю этот String в массив байтов, как этот

public static byte[] hexStringToByteArray(String s) {
        int len = s.length();
        byte[] data = new byte[len / 2];
        for (int i = 0; i < len; i += 2) {
            data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
                    + Character.digit(s.charAt(i+1), 16));
        }
        return data;
}

Чем я применяю результирующий байт-массив "imageByteArray" к коду Glide, указанному выше.

4b9b3361

Ответ 1

Допустим, ваша строка base64

String imageBytes = "HVao14fpmtHSev3OgsrQNsawkFzXNcY3BsfQla6..."

Вы должны преобразовать imageBytes String в массив байтов через

byte[] imageByteArray = Base64.decode(imageBytes, Base64.DEFAULT);

затем передайте этот imageByteArray в Glide.

Glide.with(context)
    .load(imageByteArray)
    .asBitmap()
    .placeholder(R.drawable.ic_broken)
    .into(rowImageView);

Ответ 2

Вы можете преобразовать Base64 String в изображение, используя следующие

Glide.with(context)
    .load(Base64.decode(base64ImageString, Base64.DEFAULT))
    .asBitmap()
    .placeholder(R.drawable.ic_broken)
    .into(rowImageView);

Ответ 3

Если вы получаете ошибку в .asBitmap() просто используйте это так

             Glide.with(this)
                .asBitmap()
                .load(imageAsBytes)
                .into(image)

Ответ 4

Котлин путь:

val imageByteArray = Base64.decode(sampleBase64ImageString, Base64.DEFAULT)
Glide.with(this).load(imageByteArray).into(imageView)