Android Twitter获取个人资料图片大小问题

时间:2013-02-05 01:05:00

标签: android image twitter twitter4j

我正在尝试将我的关注者的个人资料图片作为缩略图在​​ListView中使用。

这些缩略图大约是125x125,但是User.getProfileImageURL()的标准twitter4j调用;返回小得多的48x48,也建议不要用作图像源。

我尝试创建一个ProfileImage对象并将其作为参数提供,User.getProfileImageURL(profile image object.Original),

但是这段代码需要一些时间才能简单地检索url,这在加载缩略图列表时效率很低。

有关如何解决这个问题的任何建议?

3 个答案:

答案 0 :(得分:4)

修改的 Twitter API v1已被禁用,因此我的旧答案不再有效。请参阅API v1.1,我认为这需要身份验证。

如果您知道屏幕名称,twitter api允许您以4种不同的分辨率获取个人资料图片;

 https://api.twitter.com/1/users/profile_image?screen_name=Krylez&size=mini
 https://api.twitter.com/1/users/profile_image?screen_name=Krylez&size=normal
 https://api.twitter.com/1/users/profile_image?screen_name=Krylez&size=bigger
 https://api.twitter.com/1/users/profile_image?screen_name=Krylez&size=original

“更大”的图像是73x73,它将在125x125容器中进行插值。如果您对此不满意,可以尝试获取“原始”照片,但这张照片可能非常大(慢)并且不一定是正方形。

无论选择哪种方法,请确保您没有在UI线程上获取和/或解码位图。 Android API文档有excellent guidelines的正确方法。

我们也可以使用:

来使用Twitter4j

mTwitter.getUserProfileImage();

答案 1 :(得分:4)

来自官方文件:

  

您可以从GET users/show获取用户最新的个人资料图片。在用户对象中,您将找到profile_image_url   和profile_image_url_https字段。这些字段将包含   调整了用户上传图像的“正常”变体。这个“正常”   变体通常为48x48px。

     

通过修改URL,您可以检索其他变体大小写,例如   “更大”,“迷你”和“原创”。

遵循代码:

TwitterApiClient twitterApiClient = TwitterCore.getInstance().getApiClient();
twitterApiClient.getAccountService().verifyCredentials(false, false, new Callback<User>() {
    @Override
    public void success(Result<User> userResult) {
        String name = userResult.data.name;
        String email = userResult.data.email;

        // _normal (48x48px) | _bigger (73x73px) | _mini (24x24px)  
        String photoUrlNormalSize   = userResult.data.profileImageUrl;
        String photoUrlBiggerSize   = userResult.data.profileImageUrl.replace("_normal", "_bigger");
        String photoUrlMiniSize     = userResult.data.profileImageUrl.replace("_normal", "_mini");
        String photoUrlOriginalSize = userResult.data.profileImageUrl.replace("_normal", "");
    }

    @Override
    public void failure(TwitterException exc) {
        Log.d("TwitterKit", "Verify Credentials Failure", exc);
    }
});

有关详细信息,请参阅Twitter API Documentation | Profile Images and Banners

要创建自定义尺寸图片,例如90x90,您可以使用createScaledBitmap()方法。

 private final int PROFILE_PIC_SIZE = 90;
 Bitmap originalPic = null;
 Bitmap resizedPic = null;
 try {
     InputStream in = new java.net.URL(photoUrlOriginalSize).openStream();
     originalPic = BitmapFactory.decodeStream(in);
     resizedPic = Bitmap.createScaledBitmap(originalPic, PROFILE_PIC_SIZE, PROFILE_PIC_SIZE, false);
 } catch (Exception exc) {
     Log.e("Error", exc.getMessage());
     exc.printStackTrace();
 }

答案 2 :(得分:1)

例如,您可以使用getOriginalProfileImageURL()。这和它一样大。 较小的是getBiggerProfileImageURL()getProfileImageURL()

这些是您检索的网址:

http://pbs.twimg.com/profile_images/NUMBER/c62p-cAD_normal.jpeg
http://pbs.twimg.com/profile_images/NUMBER/c62p-cAD_bigger.jpeg
http://pbs.twimg.com/profile_images/NUMBER/c62p-cAD.jpeg