2016-10-20 4 views
-1

В моем приложении для Android я получаю массив байтов с сервера и должен преобразовать их в .gif-образ, а затем поместить его в виде. Я уже знаю, как преобразовать их в неподвижное изображение с помощью BitmapFactory, но изображения всегда выходят из строя. Я использую gif-drawable как мой вид контейнера для изображения .gif. Я тестировал его с локальным анимированным gif, и он отлично работает. Как я могу поместить массив байтов в gif-drawable view?преобразовать массив байтов в gif в java/android

в макете у меня есть это:

<pl.droidsonroids.gif.GifImageView 
      android:id="@+id/imgExerciseImage" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:adjustViewBounds="true" 
      android:contentDescription="exercise image" /> 

это вид похож на ImageView, который может отображать анимированные гифы

Я хочу, чтобы отобразить в нем изображение, которое я получаю от моего firebase сервера , это код:

imageRef.getBytes(DatabaseConstants.ONE_MEGABYTE * 3).addOnSuccessListener(new OnSuccessListener<byte[]>() { 
      @Override 
      public void onSuccess(byte[] bytes) { 
       Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length); 
       imgExerciseImage.setImageBitmap(bitmap); 
       progressDialog.dismiss(); 
      } 
     } 

байт [] - это анимированный gif. но для того, чтобы выразить это, я должен использовать байт [] для формирования изображения. в этом примере im использует BitmapFactory для создания растрового изображения. как я могу создать gif вместо растрового изображения?

+0

Почему бы не преобразовать входной поток в изображение? Много поддержки для этого. Не нужно читать всю вещь в байтовый массив самостоятельно. – EJP

+0

Потому что я использую firebase, и я ничего не могу получить, кроме байтового массива – BelgishChoko

+0

Что вы подразумеваете под этим? Вы получите поток байтов. Не байтовый массив. Это зависит от вас, что вы делаете с байтами. Если вы поместите их в массив yes, тогда у вас будет массив байтов. – greenapps

ответ

0

оказывается, что GIF-вытяжке поставляется с GifDrawable объект, который может получить массив байтов в это конструктор для создания анимированных GIF, которые затем могут быть помещены в GifImageView

try { 
    GifDrawable gif = new GifDrawable(bytes); 
    imgExerciseImage.setImageDrawable(gif); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
Смежные вопросы