2016-01-04 21 views
10

私はイメージの内容バイト[]形式を持っています。しかし、グライドを通してそれらをロードすると、壊れた画像が表示されます。私がやっていることを以下に示します。Glideを使用してイメージをバイト配列で読み込むには?

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

imageByteArrayは、glideを使用せずに正常にビットマップに変換されます。したがって、イメージのバイト配列に問題はありません。

紛失しているものを教えてください。

また、私はグライドライブラリcom.github.bumptech.glideを使用しています:グライド:3.6.1 とAndroidサポートライブラリcom.android.support:support-v13:23.0.1

を編集

これは私がやっていることです。

String imageBytes = "HVao14fpmtHSev3OgsrQNsawkFzXNcY3BsfQla6..." 

上記の文字列は、Web APIから受け取った実際のイメージのバイト数です。私は上記で定義されたコードをグライドして生じたバイト配列「imageByteArray」を適用していたより

私はこの

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

のようなバイト配列にこの文字列を変換しています。

+0

を使用して画像にBase64文字列を変換することができます...それだけで盲目の推測です...あなたは提供しなかったとして、どのようにこのバイト配列を取得する...この変数のスコープは何種類かのループで使用されています.... – Selvin

+0

私は理解しています。これらのタイプのコメントを与える代わりに、適切な答えで私を導いてください。ありがとう –

+0

その後、適切な質問をしてください...このコードは、私はあなたの質問とライブラリの質問から – Selvin

答えて

20

はその後グライドこのimageByteArrayを渡すあなたが

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

てバイトの配列にimageBytes文字列を変換する必要があり、あなたのbase64文字列が

String imageBytes = "HVao14fpmtHSev3OgsrQNsawkFzXNcY3BsfQla6..." 

であると言うことができます。

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

@Andan Amjad私はこの同じ問題を抱えていますが、このスニペットを試しましたが、エラーを表示しています.asBitmap()を解決できません。 – Gibs

2

あなたはマルチスレッドの基本を理解していないので、prolly以下

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

あなたの回答は受け入れられたものと何が違うのですか? – Tima

+0

何もせず、 –

関連する問題