我正在尝试将我的关注者的个人资料图片作为缩略图在ListView中使用。
这些缩略图大约是125x125,但是User.getProfileImageURL()的标准twitter4j调用;返回小得多的48x48,也建议不要用作图像源。
我尝试创建一个ProfileImage对象并将其作为参数提供,User.getProfileImageURL(profile image object.Original),
但是这段代码需要一些时间才能简单地检索url,这在加载缩略图列表时效率很低。
有关如何解决这个问题的任何建议?
答案 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的正确方法。
我们也可以使用:
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