2016-01-04 7 views
10

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

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

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

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

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

Отредактировано

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

String imageBytes = "HVao14fpmtHSev3OgsrQNsawkFzXNcY3BsfQla6..." 

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

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

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», чтобы Скольжение код, определенные выше.

+0

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

+0

Я действительно понимаю. Вместо того, чтобы давать такие комментарии, пожалуйста, направляйте меня с правильным ответом. Спасибо –

+0

, тогда, пожалуйста, задайте правильный вопрос ... поскольку этот код действительно предоставляет НЕ разбитое изображение формы меня (я использовал код из вашего вопроса и библиотеки из вопроса) – Selvin

ответ

20

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

String imageBytes = "HVao14fpmtHSev3OgsrQNsawkFzXNcY3BsfQla6..." 

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

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

затем передать эту imageByteArray в Glide.

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

@ Andan Amjad У меня такая же проблема, я пробовал этот фрагмент, но показывая ошибку, не могу решить .asBitmap(), вы можете мне помочь? – Gibs

2

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

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

чем отличается ваш ответ по сравнению с принятым? – Tima

+0

Ничего, он просто делает одну менее переменную, –

Смежные вопросы