2017-09-17 2 views
-1

J'ai étudié dans Stack Overflow et l'Internet pour comment je peux charger une image à partir d'un URL et le montrer sur l'App comme Bitmap (à l'origine un fichier .png). J'ai suivi les instructions et ai les codes comme ci-dessous, avec le code dans une classe qui s'étend AsyncTask.Impossible de charger l'image à partir d'un HttpUrlConnection (PNG à bitmap), Bitmap de inputStream est null

try { 
    imageUrl = new URL(currentApp.getImageURL()); 
    HttpURLConnection urlConnection = (HttpURLConnection) 
    imageUrl.openConnection(); 
    urlConnection.setRequestMethod("GET"); 
    urlConnection.setDoInput(true); 

    ***urlConnection.connect(); 
    InputStream inputStream = urlConnection.getInputStream(); 
    imageBitmap = BitmapFactory.decodeStream(inputStream); 
    viewHolder.tvImage.setImageBitmap(imageBitmap); 
    inputStream.close();*** 

    } catch (MalformedURLException e) { 
     Log.d(TAG, "getView: " + e.toString()); 
    } catch (IOException e) { 
     Log.d(TAG, "getView: " + e.toString()); 
    } finally { 

} 

Comme je l'ai utilisé l'outil de débogage pour me aider, je trouve que le code de réponse de la connexion est de 200, mais avec imageBitmap = BitmapFactory.decodeStream(inputStream);, je reçois la valeur nulle pour imageBitmap.

Merci d'avance!

+0

voir le logcat, quelle est la cause de plantage. –

+0

exécutez-vous le code dans n'importe quel thread? –

+0

quel est votre message de logcart? –

Répondre

0

Decode Stream return null Si le flux d'entrée est nul ou ne peut pas être utilisé pour décoder un bitmap. Essayez de télécharger l'image d'une autre URL, je télécharge miniature de playlist YouTube et sa fine 110% pour moi travailler, essayez ce code

public class DownloadImagesTask extends AsyncTask<ImageView, Void, ImageView> { 
    ImageView iv=null; 
    Bitmap bitmap=null; 
    String url=null; 

    public DownloadImagesTask(ImageView iv,int position,String url) { 
     this.iv = iv; 
     this.position=position; 
     this.url = url; 
    } 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 

    } 

    @Override 
    protected ImageView doInBackground(ImageView... url) { 
     try { 
       Log.e("url", this.url); 
       URL ulrn = new URL(this.url); 
       HttpURLConnection con = (HttpURLConnection) ulrn.openConnection(); 
       InputStream is = con.getInputStream(); 
       this.bitmap = BitmapFactory.decodeStream(is); 
       if (null != this.bitmap) 
       { 
        return iv; 
       } 
     }catch(Exception e){} 
     return null; 
    } 




    @Override 
    protected void onPostExecute(ImageView result) { 
     if(result!=null) { 
      this.iv.setImageBitmap(bitmap); 

     } 
     else 
      iv.setImageResource(R.drawable.loading); 
    } 


} 
+0

Merci pour votre réponse, mais j'ai essayé et le bitmap est toujours nul – justinj

+0

as-tu essayé avec un autre lien? peut-être le lien est brisé? –

+0

merci pour aider, mais je n'ai pas essayé plusieurs liens, tout n'a pas fonctionné – justinj