2011-12-28 1 views
0

私のアプリケーションでは、httpを使用してサーバーからデータを取得する必要があります。 取得するデータはxmlです。 このデータフィールドの1つは、バイト[]としてサーバーから来ると思われるビットマップです。サーバから来たbyte []をテキストとしてビットマップに変換するには?

今、私はxmlをスキャンして、私はオブジェクトの種類がTextであることを知っています - そして、私はビットマップに変換する方法を知らない。

これを解決するにはどうすればよいですか?

ありがとうございました。

+0

サーバーは、バイナリデータをbase64エンコードされたテキストとして送信しますか?あなたは明確にしていただけますか? AFAIKではhttpで純粋なバイナリを送ることはできません。 –

+0

もちろん、テキストです、xmlはテキストドキュメントです。まず、データのエンコード方法を特定する必要があります。 Base64は頻繁に使用されますが、他のコード体系でエンコードされている可能性があります。それは普通のUTF-8テキストとして送られたかもしれません。 –

+0

@Manish Guptaそうではありません。 HTTP接続は常にバイナリデータを転送します。 MIMEタイプはオプションであり、ペイロードタイプを識別するためにのみ使用されます。 –

答えて

2

あなたは

byte[] imageAsBytes = Base64.decode(myImageData.getBytes()); 
Bitmap decodedByte = BitmapFactory.decodeByteArray(imageAsBytes , 0, imageAsBytes.length); 

を使用することができますが、これはあなたに役立つことを願っています。

1

使用BitmapFactory.decodeByteArray()方法:

byte[] dataFromSrvr = //data from server 
Bitmap bmp=BitmapFactory.decodeByteArray(dataFromSrvr ,0,dataFromSrvr.length); 
1
httpclient = new DefaultHttpClient(); 
     entity = null; 
     httpGet = new HttpGet(path); 
     response = httpclient.execute(httpGet); 
     if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { 
      entity = response.getEntity(); 
     } 
     byte[] imageBytes= EntityUtils.toByteArray(entity); 
     Bitmap decodedByte = BitmapFactory.decodeByteArray(imageBytes , 0, imageBytes.length);