2011-05-20 6 views
0

Je suis en train de lire une image de mon sqlite db dans un MemoryStream. Je cherche au début de mon flux de mémoire, puis le passer à Drawable.CreateFromStream et il se bloque. J'ai vérifié que le flux contient les données correctes en les sauvegardant dans un fichier et en ouvrant le fichier.MonoDroid drawable.createfromstream

Impossible de trouver des exemples sur la façon de charger une image qui n'est pas dans les ressources dans un imageView.

toute aide?

+0

poster votre logcat et le code où son crash il pourrait être que l'accident est dû à un autre problème – ingsaurabh

Répondre

0
private static InputStream fetch(String urlString) 
     throws MalformedURLException, IOException { 

    conn = (HttpURLConnection)(new URL(urlString)).openConnection(); 
    conn.setDoInput(true); 
    conn.connect(); 
    DefaultHttpClient httpClient = new DefaultHttpClient(); 
    HttpGet request = new HttpGet(urlString); 
    HttpResponse response = httpClient.execute(request); 
    return conn.getInputStream(); 
} 

Resources res; 
// ***********New Function For Fetching 
public static Drawable LoadImage(String URL, BitmapFactory.Options options) { 
    Drawable drawable = null; Bitmap bm = null; 
    try { 
     if (fetch(URL) != null) { 
      try { 
       InputStream obj = (InputStream)fetch(URL); 
       bm = BitmapFactory.decodeStream(obj,null,options); 
       obj.close(); 
       conn.disconnect(); 
      } catch(OutOfMemoryError e){} 
      catch(IndexOutOfBoundsException e){} 
      drawable = new BitmapDrawable(bm); 
      return drawable; 
     } else { 
      bitmap = BitmapFactory.decodeResource(
         DefaultDisplay.mContext.getResources(), 
         R.drawable.profileplaceholder); 
      drawable = new BitmapDrawable(bitmap); 
      return drawable; 
     } 
    } catch (Exception e) { 
     Log.e("GUIMethodClasas", "fetchDrawable failed", e); 
     return null; 
    } 
} 

Cette fonction permet d'extraire une image d'une URL. Dans cette fonction, je récupère les données d'une URL et les place dans InputStream par la fonction Fetch, puis convertit ce flux en objet Drawable et Bitmap.

Dans votre cas, vous devriez lire une image à partir de la base de données SQLite et la mettre dans le flux d'entrée, puis créer une image à partir du flux comme je l'ai fait dans la fonction ci-dessus.

+0

Je pense que vous vouliez dire "chercher" pas "fatch", non? – gonzobrains

+0

Vous utilisez la fonction Fetch deux fois, en effectuant deux appels pour demander l'image. Essayez de chercher une fois dans le flux d'obj, puis vérifiez l'obj si c'est nul. Juste une pensée. –