2016-10-20 7 views
-1

내 안드로이드 앱에서 서버로부터 바이트 배열을 받고이를 .gif 이미지로 변환 한 다음보기에 배치해야합니다. BitmapFactory를 사용하여 이미지를 스틸 이미지로 변환하는 방법을 이미 알고 있지만 이미지는 항상 나옵니다. .gif 이미지에 대한 컨테이너보기로 gif-drawable을 사용하고 있습니다. 로컬 애니메이션 GIF로 테스트 해 보았는데 훌륭하게 작동합니다. 바이트 배열을 gif-drawable 뷰에 넣을 수 있습니까?바이트 배열을 java/android의 gif로 변환합니다.

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

이 내가 그 안에 내 중포 기지 서버에서받은 이미지를 표시 할 애니메이션 GIF

를 표시 할 수 있습니다 이미지 뷰와 유사한 도면이다 : 레이아웃의

나는이 있습니다 . 이것은 코드입니다 :

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입니다. 하지만 내보기에 넣으려면 바이트 [] 이미지를 형성하는 데 사용해야합니다. 이 예제에서는, 비트 맵을 생성하기 위해 BitmapFactory를 사용합니다. 어떻게 비트 맵 대신 gif를 만들 수 있습니까?

+0

에 배치 할 수있는 애니메이션 GIF를 만드는 그것의 생성자에서 바이트 배열을받을 수있는 GifDrawable 객체와 함께 제공 나타납니다 이미지? 그것에 대한 많은 지원. 전체 내용을 직접 바이트 배열로 읽을 필요가 없습니다. – EJP

+0

나는 firebase를 사용하고 있기 때문에 바이트 배열을 제외하고 아무것도 얻을 수 없습니다. – BelgishChoko

+0

그게 무슨 뜻입니까? 바이트 스트림이 수신됩니다. 바이트 배열이 아닙니다. 바이트로 무엇을할지는 당신에게 달려 있습니다. 배열에 넣어두면 바이트 배열이됩니다. – greenapps

답변

0

GIF 당김가 입력 스트림을 변환하지 왜 다음 GifImageView

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