Android Twitter获取个人资料图像大小问题
我正在尝试获取我的追随者的个人资料图像,作为缩略图在ListView中使用 这些缩略图大约是125x125,但是是User.getProfileImageURL()的标准twitter4j调用;返回小得多的48x48大小,也建议不要用作图像源 我尝试创建一个ProfileImage对象并将其作为参数User.getProfileImageURL(profile image object.Original)提供 但是这段代码需要一些时间来简单地检索url,这在加载缩略图列表时效率很低 有什么关于如何进行的建议吗 编辑 Twitter API v1已被禁用,因此我的旧答案不再有效。请参阅API v1.1,我认为它需要身份验证 如果您知道屏幕名称,则允许您以4种不同的分辨率获取配置文件图像 “更大”的图像是73x73,它将在125x125容器中插值。如果您对此不满意,可以尝试获取“原始”照片,但这张照片可能非常大(速度较慢),并且不一定是正方形 无论您选择何种方法,请确保您没有在UI线程上获取和/或解码位图。Android API文档提供了正确的方法 此外,我们还可以使用Twitter4j:Android Twitter获取个人资料图像大小问题,android,image,twitter,twitter4j,Android,Image,Twitter,Twitter4j,我正在尝试获取我的追随者的个人资料图像,作为缩略图在ListView中使用 这些缩略图大约是125x125,但是是User.getProfileImageURL()的标准twitter4j调用;返回小得多的48x48大小,也建议不要用作图像源 我尝试创建一个ProfileImage对象并将其作为参数User.getProfileImageURL(profile image object.Original)提供 但是这段代码需要一些时间来简单地检索url,这在加载缩略图列表时效率很低 有什么关于如
mTwitter.getUserProfileImage()代码>例如,您可以使用getOriginalProfileImageURL()
。这是最大的。
较小的是getBiggerProfileImageURL()
和getProfileImageURL()
以下是您检索的URL:
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
从官方文件:
您可以从GET users/show
获取用户的最新配置文件图像。在用户对象中,您可以找到profile\u image\u url
和profile\u image\u url\u 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);
}
});
谢谢你的回复,我已经知道你所说的了。我的问题是,为什么仅仅获取图像“原始”版本的URL是一项耗时的任务?只是得到一根线?当我试图通过ProfileImage.Original实现这一点时,仅仅返回链接就花费了一秒钟多的时间。但是链接不只是一个url对象或字符串吗?感谢您提供的任何信息如果您查看twitter4j的源代码,User的LazyUser实现实际上不会在构造函数中从twitter获取数据。它将此延迟到第一个方法调用实际需要该信息,然后保留该信息以供将来的方法调用。我很困惑,您能进一步说明吗?基本上,我正在迭代状态对象,只想获得原始大小的图像以填充大缩略图,但是我上面在获取这个URL时描述的调用太昂贵,导致我的提要显示慢了几秒钟。对。第一次对给定用户对象调用getProfileImageURL()时,网络操作正在发生。在构建listview之前,每个用户执行一次此方法调用,或者您可以自己构造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);
}
});
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();
}