Android:尝试设置为 ImageView 时,联系人照片像素化
Posted
技术标签:
【中文标题】Android:尝试设置为 ImageView 时,联系人照片像素化【英文标题】:Android: Contact photo is pixelated while trying to set into an ImageView 【发布时间】:2016-02-19 18:22:12 【问题描述】:我正在尝试获取电话联系人图像并设置为 ImageView 。我正在获取图像,但是当我尝试将图像设置为 ImageView 时,它被像素化了。
获取图片的代码
String select = "(" + ContactsContract.Contacts.DISPLAY_NAME + " == \"" + name + "\" )";
Cursor c = getApplicationContext().getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, CONTACTS_SUMMARY_PROJECTION, select, null, ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC");
startManagingCursor(c);
if (c.moveToNext())
idValue = c.getString(0);
InputStream inputStream = ContactsContract.Contacts.openContactPhotoInputStream(getApplicationContext().getContentResolver(),
ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, new Long(idValue)));
if (inputStream != null)
photo = BitmapFactory.decodeStream(inputStream);
contact_image.setImageBitmap(photo);
我想显示联系人的详细信息,因此我尝试按名称获取联系人 ID。
Layout.xml
<ImageView
android:id="@+id/contact_image"
android:layout_
android:layout_
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:scaleType="centerCrop"
android:src="@drawable/un_known_avtar" />
我尝试了几乎所有的 xml 比例类型。但联系人图像仍然被拉伸。
任何人都可以帮助避免联系人图像的拉伸
【问题讨论】:
可以加截图吗? @Awais King 我刚刚添加了截图,你可以检查一下 是因为一些低端的安卓设备因为内存的原因,会以低分辨率保存联系人的图片,所以当你在检索后尝试拉伸时,图片的边缘会出现很多噪点或变得模糊跨度> 不,我用的是小米,它有 1 GB 内存,运行 4.4 版本。在默认呼叫屏幕中,联系人照片显示在呼叫背景中,并且没有像素化。刚才我尝试将图像从厨房设置到 imageView 中。当时图像也没有像素化。当我尝试通过 isung conatct id 从联系人中获取图像时,只有图像被像素化@Awais King 您是用同一个设备拍摄联系人的照片,还是已经设置好? 【参考方案1】:尝试在openContactPhotoInputStream
末尾添加 true 布尔值以获得高分辨率(需要 API 级别 14 或更高)
InputStream inputStream = ContactsContract.Contacts.openContactPhotoInputStream(getApplicationContext().getContentResolver(),
ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, new Long(idValue)), true);
来源:Large Photo Version from contacts in android
【讨论】:
谢谢,低版本怎么办@Awais King 我不认为你可以在较低的 API 中做到这一点,因为Contacts.Photo.DISPLAY_PHOTO
仅在 14+ API 中可用
好的,谢谢@Awais King以上是关于Android:尝试设置为 ImageView 时,联系人照片像素化的主要内容,如果未能解决你的问题,请参考以下文章
在android 5上设置ImageView colorFilter(api 21)
当我将 ImageView 的可见性设置为线性布局消失时,它的一个孩子仍然存在,另一个在 android 中消失了