2011-08-12 19 views
1

我有以下代碼:的Java:從UTF8字符串創建可繪製

public void onSuccess(String response) { 
    Log.i("EOH",response); 
    Drawable d = null; 
    Object content=response.getBytes(); 
    InputStream is = (InputStream)content; 
    d = Drawable.createFromStream(is, "src"); 

    ImageView captcha = (ImageView)findViewById(R.id.imageView2); 
    captcha.setImageDrawable(d); 
} 

這裏是響應字符串我得到(來自logcat中):

08-12 11:33:信息/ EOH(10244):PNG

08-12 11:33:52.223:INFO/EOH(10244):08-12 11:33:52.223: INFO/EOH IHDR d 2 %Wéé IDAThíéSgÇ ÏÙM²\ r 08-12 11:33:52.223:INFO/EOH(10244):* H =¨xß-¥:鎳}Ѫ:?}¡S +μ3ötÇàÕ AI#$a7ÙÝd¾H」
£ ²$8ÝÏ«äÙßîóï{|,²Ê2)英哩,²Ê2)Ë��¦,² E2)英哩,²@¬dg¡ä< d°BsìJvVHÖpüõÐí°I·XH÷1×ÁJkÅâbQ§3PÅKãôÊp)¬¬ {AO°¡0ªÄR¬>MÎý0uýËâ/ |ÖÊÌÊöðèCUWl»CEAC〜¸ÈIVRKþ>wKÑgX]góY¼¢
12³²Å{ZB型\ o«&0噸]oìŹ¢³ß}§êªYXiêwq; A 08 -12 11:33:52.223:INFO/EOH(10244): I。}#Bh +»¹=ÒNF3Ø} -ÞSÃTY uÖ*,H_EÕ3μÝ|ïÉkM#Q}Â_ Ê% |¤·E,AA>Á4yμÁ^} 3O×PU /©RLwDáov] \IaÔIϧÐy| 7U Å÷4q®#ÎsШ<〜+ t; F¡|ÄÄää9 9 9,012 012 012 012 012 012 012 012 32 32 32 32 32 32 &3qofê 08-12 11:33:52.223:INFO/EOH(10244) : IÎY\¤s[6¯klÕÖr qºÊ{*ôNʶlâ¨I®!¬© %ÃÝ|/ðþÙýèáÙÃèßq¤*brPýK=S��wÂmAiÔE:wséKϧXÖ-"����GxV;B¨ÙtÚÓÜâ=UJ¤¢½*c{±ä��dM+KQ9UFcô¨<~yòZ*G~6¥UÖJ;n©q��øÌu4SA7ßFRp£½ÆMºl¸5©+CqP£0ª.{Ó3_ÅýSÝg­ÈüÒ%¤äÊ@%]qÖÛúôiºöÓô!Ñß'ìá>YÞ4ó#!t°pßËøt¦>/i»ý6{s*1ÓÍ÷f¶üÜs¨tËh×dbÅ ´ 46!OtõÈêî))(��ÓeéÂVJ~EK.{y;î4°u lÝâv¯ÅóMÙ×Sǫ̀4Q¢¢&p®M̬Ä_gî§DlwlÙÇíÎ:��³¬·U÷ÇÄ^ôÇ5Ðö49ÉÂtAjeeÕcj��¾WèlXLy)ïÛk.µøÅÀlrNÓu'Éù¬ë.z¦¶?öüN¸MÖä¬EE,^��ÅW½¬¥Zkó­ßRßwçÛÆå ��J£U¶ÊT£®ëÊ��°9ü4´*NóË 5¶uM;³Ròe|XÑ��è>Õÿ;ßO\JÌ��@[¸CÓµåuºVQÞ_\IÌòªÅÜVÜj¤qÒA'Ý#úÿüóO×uAO4ʼ²Êñ¨ø¡fÖ{ëe SLY0eÀSLY0eÀe SLY0eÀe§〜)l1 + IEND®B`

正如您所看到的,我試圖將名爲'response'的字符串轉換爲Drawable對象。麻煩的是,圖像始終是空白的!

有誰知道任何方式我可以解決這個問題?

提前許多感謝,


編輯:

這並沒有工作,要麼;(

@Override 
public void onSuccess(String response) { 
    Log.i("EOH",response);   
    ByteArrayInputStream bis = new ByteArrayInputStream(response.getBytes()); 
    Bitmap bm=BitmapFactory.decodeStream(bis); 

    ImageView imgView = (ImageView)findViewById(R.id.imageView2); 
    imgView.setImageBitmap(bm); 
} 

回答

2

試試這個:

BitmapDrawable drawable = BitmapFactory.decodeFile(response); 

或者你可以如果你不喜歡,請做以下事情編輯它是可繪製的。

Bitmap bm = BitmapFactory.decodeFile(response); 
ImageView captcha = (ImageView)findViewById(R.id.imageView2); 
captcha.setImageBitmap(bm); 

EDITED

對於網上的文件,您可以使用此:

BitmapFactory.decodeStream(is) 
+0

嗨,非常感謝您的回覆 - 剛從午餐時間回來 - 我會盡力回覆您。 – Eamorr

+0

嘿,試圖整合你的代碼,它沒有工作;(圖片只是顯示空白... – Eamorr

+0

等待 - 這是一個本地文件或網絡文件? –

0

下面是我使用的全功能(不工作...):

private void captchaLoad() { 
     AsyncHttpClient myClient = new AsyncHttpClient(); 
     PersistentCookieStore myCookieStore = new PersistentCookieStore(context); 
     myClient.setCookieStore(myCookieStore); 
     RequestParams params = new RequestParams(); 

     myClient.post("http://www.extremetech.com/wp-content/uploads/2011/08/amd-logo-106x59.jpg", params, new AsyncHttpResponseHandler() { 
      @Override 
      public void onStart() { 

      } 

      @Override 
      public void onSuccess(String response) { 
       Log.i("EOH",response); 

       ByteArrayInputStream bis = null; 
       try { 
        bis = new ByteArrayInputStream(response.getBytes("UTF8")); 
       } catch (UnsupportedEncodingException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
       Bitmap bm=BitmapFactory.decodeStream(bis); 

       ImageView imgView = (ImageView)findViewById(R.id.imageView2); 
       imgView.setImageBitmap(bm); 
      } 

      @Override 
      public void onFailure(Throwable e) { 

      } 
     }); 
    }