2011-12-29 14 views
0

私のアプリでは、ボタンをクリックすると、URLから画像をダウンロードしています。画像は正しく表示されますが、空になると表示されます。 *問題は何度かビットマップオブジェクト(つまり、コード内の "result")がnullを返すことです。 *誰でも助けてください。また、同じ関数内で画像を圧縮していないアンドロイド - 正しく表示されないURLから画像をダウンロード

public static Drawable getDrawableFromUrl(String url) { 

    Drawable image = null; 

    try { 
     InputStream in = (java.io.InputStream) new java.net.URL(url).getContent(); 
     if (in != null) { 
      image = Drawable.createFromStream(in, "image"); 
      in.close(); 
     } 
    } catch (Exception ex) { 
     ex.printStackTrace(); 

    } 
    return image; 
} 

:後

は私のコード

try 
      { 

      String ImageUrl = ((eachReview)RB_Constant.revht.get(title_value)).UserImageUrl; 
      System.out.println("Image Url:"+ImageUrl); 
      if(ImageUrl != null) 
      { 
       DownLoadImageInAThreadHandler(ImageUrl,holder);                  
      } 
      else 
      { 
       System.out.println("Image url is null then display the default image"); 
       holder.userImage.setImageResource(R.drawable.defaultuserimage); 
      } 
     } 
     catch(Exception e){ 
      System.out.println("Error from Userimage fetching.."+e.toString()); 
     } 



private void DownLoadImageInAThreadHandler(final String imgurl,final ViewHolder holder) 
{ 



    //Thread for getting the attributes values 
    Thread t = new Thread() 
    { 
     public void run() 
     {      
      try 
      { 

       Bitmap drawable = getDrawableFromUrl(imgurl);      
       System.out.println("Drawable(after downloading):"+drawable);       
       if(drawable != null) 
       {            
        holder.userImage.setImageBitmap(drawable);      
       } 
       else 
       { 
        System.out.println("after downloading drawable is null then set the default image"); 
        holder.userImage.setImageResource(R.drawable.defaultuserimage); 
       }            
      } 
      catch(Exception exp) 
      { 
       System.out.println("Exception in DownLoadImageInAThread : " + exp.getMessage()); 
      } 
     } 

     private Bitmap getDrawableFromUrl(String imageUrl) 
     {        
       try 
       { 
        URL myFileUrl = new URL(imageUrl); 
        HttpURLConnection conn = (HttpURLConnection) myFileUrl.openConnection();      
        conn.setDoInput(true); 
        conn.connect(); 
        InputStream is = conn.getInputStream(); 
        final Bitmap result = BitmapFactory.decodeStream(is); 
        is.close(); 
        new Thread() { 
         public void run() { 
          ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
          if(result != null) 
          { 
           result.compress(Bitmap.CompressFormat.JPEG, 40, bytes); 
          }                         
         } 
        }.start();       
        return result; 
       } 
       catch (FileNotFoundException e) 
       { 
        e.printStackTrace(); 
       } 
       catch (MalformedURLException e) 
       { 
        e.printStackTrace(); 
       } 
       catch (IOException e) 
       { 
        e.printStackTrace(); 
       } 
       return null;        
     }             
    }; 
    t.start();        
} 
+0

ブラウザの画像Urlをチェックしましたか?画像はそこにありますか?ダウンロードしようとしている画像が、提供されたURLで利用できない可能性があります。 –

+0

はい、画像は利用可能です。 PLZは私のスレッドの呼び出しが正しいことをチェックする? – naresh

+0

ピカソに切り替えることを考えましたか? [ここをクリック] http://stackoverflow.com/questions/22330772/why-to-use-android-picasso-library-to-download-the-images – Sarpe

答えて

0

としてあなたgetDrawableFromUrlを作ってみましょうです。画像を正常に受信した後に、この操作を行ってください。 1つは、スレッドのgetDrawableFromUrl関数を同じクラスに書き出すことです。これはあなたのために働くことを望みます。

+0

それはまだヌルを返します – naresh

+0

これは変です。理由は、私が以前あなたに言ったURLで画像が利用できないように見えます。しかし、あなたによると、イメージは利用可能です。私はランダムに画像がnullになるか、同じ画像が毎回nullであると教えてください。 –

+0

ランダムに画像がありません – naresh

関連する問題