我知道android数据库保留了两种联系人照片, [[[照片最多可以以两种方式存储 - 默认“照片”是直接存储在数据行中的缩略图大小的图像,而“显示照片”(如果存在)是存储为文件的较大版本。 ]]] 小的是96 * 96,大的是480 * 480 现在问题:
PS:我试过了:
intent.putExtra("outputX", 96);
intent.putExtra("outputY", 96);
但是当我打开数据库时,它变成了96 * 57 ....困惑....有些帮助改变了它?
好人一声平安(那是中国好男孩,祝你好运) 谢谢^ _ ^
答案 0 :(得分:0)
我不太确定你将照片存储两次是什么意思? 是的,很多设备都会生成缩略图,但更多的是因为显示缩略图图像是一个常规用例。
您是否尝试过提取用户ID并使用该ID查询联系人数据表?
这可能是一个冗长的方法,但是,(伪代码)
Fetch contact id using the URI RawContacts.CONTENT_URI
Fetch Photo id using the URI Contacts.CONTENT_URI
Fetch Photo using the URI Data.CONTENT_URI, the projection you want here is Photo.PHOTO (this will give you a blob)
Google应提供易于阅读的这些操作示例:)
答案 1 :(得分:0)
要获得更大的图像,您可以使用以下代码(前提是您有contactID):
public static InputStream getLargeContactPhoto(Long contactId, Context context) {
Uri contactUri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, contactId);
Uri displayPhotoUri = Uri.withAppendedPath(contactUri, ContactsContract.Contacts.Photo.DISPLAY_PHOTO);
try {
AssetFileDescriptor fd = context.getContentResolver().openAssetFileDescriptor(displayPhotoUri, "r");
return fd.createInputStream();
} catch (Exception e) {
return null;
}
}