3

我正在使用以下 void 方法从 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;
    }

我用这种方法提供的最常见的 URL 是: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,并获取位图文件?

4

2 回答 2

0

为什么不直接请求图像 URL 并直接获取它呢?

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

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

于 2012-07-26T08:32:04.697 回答
-1

您需要在 URL 中附加 ?type=large 以获取图片...

例如,以下代码显示了如何使用 imageview...

ImageView 用户图片;

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

网址 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并告诉我您的结果。

于 2012-07-26T05:33:18.137 回答