2012-07-26 44 views
3

我使用下面的空隙的方法来得到一个URL的位图图像:从重定向的URL检索位图

public static Bitmap downloadBitmap(String url) { 
     final AndroidHttpClient client = AndroidHttpClient.newInstance("Android"); 
     final HttpGet getRequest = new HttpGet(url); 

     try { 
      HttpResponse response = client.execute(getRequest); 
      final int statusCode = response.getStatusLine().getStatusCode(); 
      if (statusCode != HttpStatus.SC_OK) { 
       Log.w("ImageDownloader", "Error " + statusCode + " while retrieving bitmap from " + url); 
       return null; 
      } 

      final HttpEntity entity = response.getEntity(); 
      if (entity != null) { 
       InputStream inputStream = null; 
       try { 
        inputStream = entity.getContent(); 
        final Bitmap bitmap = BitmapFactory.decodeStream(inputStream); 
        return bitmap; 
       } finally { 
        if (inputStream != null) { 
         inputStream.close(); 
        } 
        entity.consumeContent(); 
       } 
      } 
     } catch (Exception e) { 
      // Could provide a more explicit error message for IOException or IllegalStateException 
      getRequest.abort(); 
      Log.e("ImageDownloader", "Error while retrieving bitmap from " + url); 
     } finally { 
      if (client != null) { 
       client.close(); 
      } 
     } 
     return null; 
    } 

最常用的网址我用这种方法喂养是这样的:http://graph.facebook.com/+FACEBOOK_USER_ID+/picture,但这个URL重定向到http://profile.ak.fbcdn.net/static-ak/rsrc.php/v2/y9/r/xxxxx.gif。这就是为什么我没有获得位图图像,我得到的是与302重定向有关的错误。 如何处理重定向的URL并获取位图文件?

回答

-1

需要追加类型= URL中大到得到的图片...

e.g下面的代码演示了如何获取对imageview的...

ImageView的user_picture?;

userpicture =(ImageView)findViewById(R.id.userpicture);

URL img_value = null;

img_value = new URL(“http://graph.facebook.com/”+ id +“/ picture?type = large”);

位图mIcon1 = BitmapFactory.decodeStream(img_value.openConnection()。getInputStream());

userpicture.setImageBitmap(mIcon1);

尝试在URL中添加?type = large并让我知道您的结果。

+0

的这一翻译还不行。 – phreakhead 2013-05-09 02:56:51

0

为什么不直接请求图片网址并直接获取?

https://graph.facebook.com/[object id]/picture

要求 https://graph.facebook.com/[object id]?fields=picture

+0

'https://graph.facebook.com/ [object id]?fields = picture'返回'JSON'。因此,我不会直接提取它,而是先解析“JSON”以获取确切的URL。不错的建议,但! :) – 2012-07-26 10:26:27