2

我正在尝试获取我的关注者的个人资料图片,以便在 ListView 中用作缩略图。

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

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

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

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

4

3 回答 3

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 文档为正确执行此操作提供了极好的指南。

我们还可以通过以下方式使用 Twitter4j:

mTwitter.getUserProfileImage();

于 2013-02-05T01:26:03.430 回答
4

来自官方文档:

您可以从 获取用户最近的个人资料图片GET users/show。在用户对象中,您会找到profile_image_urlprofile_image_url_https字段。这些字段将包含用户上传图像的调整大小的“正常”变体。这种“正常”变体通常为 48x48 像素。

通过修改 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 文档 | 个人资料图片和横幅

要创建自定义尺寸图片,例如 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();
 }
于 2015-10-10T10:10:26.217 回答
2

例如,您可以使用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
于 2014-11-20T23:52:11.210 回答