2016-10-20 2 views
-1

Dans mon application android je reçois un tableau d'octets d'un serveur et dois les convertir en une image .gif, puis placez-le dans une vue. Je sais déjà comment les convertir en image fixe en utilisant BitmapFactory, mais les images ressortent toujours. J'utilise gif-drawable comme vue de mon conteneur pour l'image .gif. Je l'ai testé avec un gif animé local et ça marche très bien. Comment puis-je mettre le tableau d'octets dans la vue gif-drawable?convertir tableau d'octets en gif dans java/android

dans la mise en page que j'ai ceci:

<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" /> 

c'est une vue similaire à un ImageView qui peut afficher des gifs animés

Je veux afficher dans ce une image que je reçois de mon serveur firebase . c'est le code:

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(); 
      } 
     } 

l'octet [] est le gif animé. mais pour le mettre dans ma vue, je dois utiliser l'octet [] pour former une image. Dans cet exemple, j'utilise BitmapFactory pour créer un bitmap. comment puis-je créer un gif au lieu d'un bitmap?

+0

Pourquoi ne pas convertir le flux d'entrée une image? Beaucoup de soutien pour cela. Pas besoin de lire le tout dans un tableau d'octets. – EJP

+0

Parce que j'utilise firebase et je ne peux rien obtenir sauf un tableau d'octets – BelgishChoko

+0

Que voulez-vous dire par là? Vous recevrez un flux d'octets. Pas un tableau d'octets. C'est à vous de décider ce que vous faites avec les octets. Si vous les mettez dans un tableau, alors vous avez un tableau d'octets. – greenapps

Répondre

0

il semble que gif thermoformable est livré avec un objet GifDrawable qui peut recevoir un tableau d'octets dans son constructeur pour créer un gif animé qui peut ensuite être placé dans un GifImageView

try { 
    GifDrawable gif = new GifDrawable(bytes); 
    imgExerciseImage.setImageDrawable(gif); 
} catch (IOException e) { 
    e.printStackTrace(); 
}