2011-02-09 15 views
13

Powiel możliwe:
Is it possible to use BitmapFactory.decodeFile method to decode a image from http location?ustawić URL obrazu aby zobaczyć

mam problem w komplecie url obrazek aby obejrzeć. Próbowałem poniżej metodami

metoda 1:

Bitmap bimage= getBitmapFromURL(bannerpath); 
image.setImageBitmap(bimage); 

public static Bitmap getBitmapFromURL(String src) { 
     try { 
      Log.e("src",src); 
      URL url = new URL(src); 
      HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
      connection.setDoInput(true); 
      connection.connect(); 
      InputStream input = connection.getInputStream(); 
      Bitmap myBitmap = BitmapFactory.decodeStream(input); 
      Log.e("Bitmap","returned"); 
      return myBitmap; 
     } catch (IOException e) { 
      e.printStackTrace(); 
      Log.e("Exception",e.getMessage()); 
      return null; 
     } 
    } 

Metoda 2:

Drawable drawable = LoadImageFromWebOperations(bannerpath); 
    image.setImageDrawable(drawable); 

    private Drawable LoadImageFromWebOperations(String url) 
    { 
     try 
     { 
      InputStream is = (InputStream) new URL(url).getContent(); 
      Drawable d = Drawable.createFromStream(is, "src name"); 
      return d; 
     }catch (Exception e) { 
      System.out.println("Exc="+e); 
      return null; 
     } 
    } 

Próbowałem dwóch powyższych metod, ale nie działają. oba wyświetlają DEBUG/skia (266): --- dekoder-> dekodowanie zwróciło fałsz. użyłem ścieżek obrazu URL demo, który działa. ale ta ścieżka nie działa. Proszę, powiedz mi, co jest nie tak i co zrobię.

Z góry dziękuję.

Pozdrawiam.

+0

dać nam adres URL obrazu, który pobierasz – Javanator

Odpowiedz

8

Właśnie przetestowałem twoją "Metodę 1" w mojej aplikacji i działa dobrze.

Może zapomnieli tę linię w pliku AndroidManifest.xml:

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

metoda 1 współpracuje z pozwoleniem Internetu na ImageView wykorzystaniem setImageBitmap (bimage). – chirale

+1

Moja aplikacja ulega ciągłemu awarii z wyjątkiem wyjątków 'android.os.NetworkOnMainThreadException' (po dodaniu uprawnienia INTERNET do manifestu). Co ja robię źle? –

+0

NetworkOnMainThreadException nie powinien się zawieszać, a jedynie informować, że wykonuje on komunikację sieciową w wątku interfejsu użytkownika. – Deminetix

Powiązane problemy