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 user_picture;

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

URL img_value = null;

img_value = 新しい 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 に答える