1

我正在尝试在给定联系人 ID 的情况下获取联系人的全尺寸图像,我想出了这个:

private Bitmap getUserPhoto(long contactId) {
    Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI,
        contactId);
    Uri displayPhotoUri = Uri.withAppendedPath(contactUri,
        Contacts.Photo.DISPLAY_PHOTO);
    try {
        AssetFileDescriptor fd = getContentResolver()
            .openAssetFileDescriptor(displayPhotoUri, "r");
        return BitmapFactory.decodeStream(fd.createInputStream());
    } catch (IOException e) {
        return null;
    }
}

但图像尺寸太小(缩略图)

如何获取联系人的全尺寸照片?

谢谢

4

2 回答 2

2

如果您的手机中有原始图像,您可以使用openContactPhotoInputStream(ContentResolver cr, Uri contactUri, boolean preferHighres) 。并设置preferHighres TRUE。

于 2014-01-20T23:26:34.920 回答
0

您可以调整位图的大小

private Bitmap getUserPhoto(long contactId) {
    Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI,
        contactId);
    Uri displayPhotoUri = Uri.withAppendedPath(contactUri,
        Contacts.Photo.DISPLAY_PHOTO);
    try {
        AssetFileDescriptor fd = getContentResolver()
            .openAssetFileDescriptor(displayPhotoUri, "r");
        return Bitmap.createScaledBitmap(BitmapFactory.decodeStream(fd.createInputStream()), newWidth, newHeight, true);
    } catch (IOException e) {
        return null;
    }
}    

newWidth 和 newHeight 是 Int 值。

于 2013-08-23T12:41:22.017 回答