2013-10-06 159 views
0

虽然不是很优雅,但我使用了一种快速入侵方式来解决这个问题。但是,我仍然希望发现哪里出了问题。从URL检索位图

关于Flickr的API,

我有要一个位图对象的图像,并且我有权访问用户ID grimneko和图片ID 8638235984

因此,我试图

URL url = new URL("http://www.flickr.com/photos/grimneko/8637130199/lightbox/"); 
Bitmap mp = BitmapFactory.decodeStream(url.openConnection().getInputStream()); 

然而,熔点是在这种情况下null。我也尝试www.google.com作为url,这也似乎不起作用。

但是,http://3.bp.blogspot.com/-sUAEV-EIlyY/T4WIGDkoLpI/AAAAAAAACKI/epNLfw01cW0/s320/corgi+working.jpg确实有效。

我的猜测是Bitmap对象只能从具有图像扩展名的URL创建。它是否正确?

如果是这样的话,我该如何在Image View中呈现来自flickr url的图片?

回答

0

试试这个..

public static Bitmap getBitmapFromURL() { 
     try { 
      URL url = new URL("http://www.flickr.com/photos/grimneko/8637130199/lightbox/"); 
      HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
      connection.setDoInput(true); 
      connection.connect(); 
      InputStream input = connection.getInputStream(); 
      Bitmap myBitmap = BitmapFactory.decodeStream(input); 
      return myBitmap; 
     } catch (IOException e) { 
      e.printStackTrace(); 
      return null; 
     } 
} 

,并指该链接..

How to load an ImageView by URL in Android?

+0

嗨Tamilan,谢谢大家的响应。但是,如果您查看上面的代码,它几乎是相同的。经过测试,它仍然返回null。 – user1431282

+0

@ user1431282你检查这个链接http://3.bp.blogspot.com/-sUAEV-EIlyY/T4WIGDkoLpI/AAAAAAAACKI/epNLfw01cW0/s320/corgi+working.jpg你有没有得到图像 – Hariharan

+0

是的:)它的工作正如我在原始文章中提到的那样。我想知道为什么这种方法不适用于任何flickr图像。 – user1431282

0
private class setProfileData extends AsyncTask<Void, Void, Bitmap> { 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     // Showing progress dialog 
     progressDialog = new ProgressDialog(getActivity()); 
     progressDialog.setMessage("Loading .."); 
     progressDialog.setCancelable(true); 
     progressDialog.show(); 

    } 

    @Override 
    protected Bitmap doInBackground(Void... arg0) { 
     try { 

      String imgurl = imageURL.replace(" ", "%20"); 
      Log.e("Profile pic path ----------->>>>>", imgurl); 
      ProfilePicBitmap = null; 
      // URL url = new URL(imgurl); 
      try { 
       Bitmap ProfilePicBitmap = null; 
       BitmapFactory.Options options = new BitmapFactory.Options(); 
       options.inSampleSize = 8; 
       try { 
        ProfilePicBitmap = BitmapFactory.decodeStream(
          (InputStream) new URL(imgurl).getContent(), null, options); 

       } catch (Exception e) { 

        e.printStackTrace(); 
        try { 
         ProfilePicBitmap = BitmapFactory.decodeStream((InputStream) new URL(imgurl) 
         .getContent()); 

        } catch (Exception e1) { 
         // TODO Auto-generated catch block 
         e1.printStackTrace(); 
        } 
       } 

      } catch (Exception e) { 
       e.printStackTrace(); 
       ProfilePicBitmap = BitmapFactory.decodeResource(
         getResources(), R.drawable.ic_launcher); 
      } 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return ProfilePicBitmap; 

    } 

    @Override 
    protected void onPostExecute(Bitmap result) { 
     super.onPostExecute(result); 
     // Dismiss the progress dialog 
     if (progressDialog.isShowing()) { 
      progressDialog.dismiss(); 
     } 

     try { 
      if (ProfilePicBitmap != null) { 
       ImageView.setImageBitmap(ProfilePicBitmap); 
      } else { 
       ImageView.setImageBitmap(BitmapFactory 
         .decodeResource(getResources(), 
           R.drawable.ic_launcher)); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

    } 

    @Override 
    protected void onCancelled() { 

     super.onCancelled(); 
     progressDialog.dismiss(); 

    } 
}