BitmapFactory.decodeStream始终返回null值

时间:2014-02-11 17:44:06

标签: android bitmap cursor buffer byte

这里我从光标

获取值
    if (mProfileCursor.moveToFirst()) {
        byte[] blob = mProfileCursor.getBlob(
            mProfileCursor.getColumnIndex(ContactsContract.Profile.PHOTO_URI));
        ByteArrayInputStream inputStream = new ByteArrayInputStream(blob);
        BufferedInputStream bis = new BufferedInputStream(inputStream,1024);
        bitmap = BitmapFactory.decodeStream(bis);
    }
} finally {
    if (mProfileCursor != null) {
        mProfileCursor.close();
    }
}

我正在尝试将byte []更改为位图,但我总是 null ,根据以下帖子Android: bitmapfactory.decodestream returns null中的答案,我尝试了 BufferedInputStream 但是它不适合我。 另外Romain Guy这里说这是android中已知的缺陷,但答案很老,请告诉我是否有办法让位图正确。

1 个答案:

答案 0 :(得分:1)

public static final String PHOTO_URI

在API级别11中添加 可用于检索联系人的全尺寸照片的URI。如果PHOTO_FILE_ID不为null,则将使用基于CONTENT_URI的URI填充。否则,将使用与PHOTO_THUMBNAIL_URI相同的值填充此值。照片可以通过URI(此字段)或ID(请参阅PHOTO_ID)来引用。如果PHOTO_FILE_ID或PHOTO_ID不为空,则PHOTO_URI和PHOTO_THUMBNAIL_URI不应为空(但不一定相反)。因此,使用PHOTO_URI是一种更健壮的检索联系人照片的方法。

输入:TEXT

常数:“photo_uri”

这就是doc说的,pskink是对的,它返回一个String。另外,如果添加decodeStream无法解码图像数据并且也不会生成任何异常,则返回null,因此请小心,在使用之前检查值。