2013-05-22 43 views
1

我很新的Android開發,並花了整天看着問題與我的ListAdapter,但找不到任何答案,幫助我解決了我的問題。BitmapFactory:無法解碼流

我有一個從URL解析的JSON NewsString,需要將縮略圖加載到ListView中。 我試圖通過Imageloader(https://github.com/novoda/ImageLoader#directloader-utility)加載它,然後將位圖轉換爲Drawable,以便我可以在我的ListView中使用它(之前做過)。

我有權限的清單:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.INTERNET" /> 

而且JSONObject的是在那裏的AsyncTask我嘗試加載從URL中的圖像解析。

try { 
    String url = e.getString("imageThumb"); 
    Bitmap bmp = new DirectLoader().download(url); 
    Drawable d = new BitmapDrawable(null,bmp); 
    Log.d("getBitmap", d.toString()); 
    row.put("thumb", d); 
}catch (Exception e5) { 
    Log.e("IMG", "Failed to load Thumbnail From URL: "+e5.toString()); 
    Drawable d = MainActivity.hweb_icon; 
    row.put("thumb", d); 
} 

,但我總是得到同樣的錯誤信息: enter image description here

我試了幾個教程和其他的東西,但它從來沒有摸索出適合我。 該URL是正確的,不需要任何編碼。

我以前的做法是這樣的:

try { 

    String url = e.getString("imageThumb"); 
    InputStream in = new java.net.URL(url).openStream(); 
    Bitmap bmp = BitmapFactory.decodeStream(in);                     
    Drawable d = new BitmapDrawable(null,bmp); 
    row.put("thumb", d); 
}catch (Exception e5) { 
    // handle it 
    Log.e("IMG", "Failed to load Thumbnail From URL : "+e5.toString()); 

} 

很抱歉,如果這個問題已經回答了,但我發現很多解決方案,並嘗試過,但沒有人幫助我。

THX

pwittke

編輯: 我創建了一個新的Testproject和下面的代碼工作得很好,所以我就開始停用使用可繪製在某種程度上每一個部分和原來,該SimpleAdapter着加載圖像的方式......它只能從resurces中加載圖像,而不是從url中加載圖像... thx爲您的腳本britzl,它工作正常,現在我需要找到一種方法來更改適配器的圖像...

回答

0

有很多方法來加載位圖一個URL。如果你想推出自己的,你可以嘗試這樣的:

public Bitmap loadImage(String url) { 
    DefaultHttpClient client = new DefaultHttpClient(); 
    Bitmap bitmap = null; 
    try { 
     HttpResponse response = client.execute(new HttpGet(url)); 
     HttpEntity entity = response.getEntity(); 
     if(entity != null) { 
      InputStream in = entity.getContent(); 
      bitmap = BitmapFactory.decodeStream(in); 
     } 
    } 
    catch (Exception e) { 
    } 
    return bitmap; 
} 

,如果你碰上你可能不得不換流解碼器Skia的錯誤,有一些事情要考慮,例如。 Read more here.

但是,我會建議你看看現有的庫。來自Square的圖庫Picasso可能是你最好的選擇。例如:

Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView); 
+0

感謝您的回答我會嘗試tmr當我回到辦公室! :) – pwittke

+0

我試過你的功能,但即時通訊結束在相同的錯誤信息: BitmapFactory |無法解碼流:java.io.FileNotFoundException:/[email protected]:打開失敗ENOENT(沒有這樣的文件或目錄) System.out | resolveUri不合格uri:android:[email protected] – pwittke

+0

它從我們自己的服務器的所有.jpg圖像和URL是乾淨的:/ 據我所知,它似乎像位圖丟失之前,我把它轉換成可繪製的? – pwittke

相關問題