存储联系人照片,有可能在将来检索原始图像

时间:2013-06-20 13:42:37

标签: android android-contacts android-photos

根据官方文档,其中包含有关联系人照片处理的信息(Android 4.0):

  

大照片

     

Android现在支持联系人的高分辨率照片。现在,当   您将照片推送到联系人记录中,系统会将其处理   96x96缩略图(如前所述)和256x256“显示屏   照片“存储在一个新的基于文件的照片商店(确切地说   系统选择的尺寸可能在将来有所不同)。您可以   通过在平时放置一张大照片为联系人添加一张大照片   数据行的PHOTO列,系统将处理该列   适当的缩略图和显示照片记录。

所以,我想知道我是否存储了大小为400x400 px的照片,是否有可能以原始大小检索此照片,或者我必须高兴只有照片减少大小

2 个答案:

答案 0 :(得分:1)

试试这个例子:

 public void writeDisplayPhoto(long rawContactId, byte[] photo) {
     Uri rawContactPhotoUri = Uri.withAppendedPath(
             ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId),
             RawContacts.DisplayPhoto.CONTENT_DIRECTORY
     );

     try {
         AssetFileDescriptor fd = getContentResolver().openAssetFileDescriptor(
             rawContactPhotoUri, 
             "rw"
         );

         OutputStream os = fd.createOutputStream();
         os.write(photo);

         os.close();
         fd.close();
     } catch (IOException e) {
         // Handle error cases.
     }
  }

使用文件描述符可以读/写联系人照片。此外,我认为您需要与照片的商店缩略图联系

For more info see ContactsContract.RawContacts.DisplayPhoto class

答案 1 :(得分:0)

简单的解决方案:

  • 从任何PC登录您的Gmail帐户,然后搜索“contacts”
  • 在联系人页面中:输入您要搜索的联系人姓名
  • 点击您想要的联系人&选择“保存图像...”

注意:我不知道手机内部是否有更高质量的版本,但我仍在努力。