BitmapFactory.decodeStream 总是返回空值
Posted
技术标签:
【中文标题】BitmapFactory.decodeStream 总是返回空值【英文标题】:BitmapFactory.decodeStream always returning null value 【发布时间】:2014-02-11 17:44:05 【问题描述】:我在这里从 Cursor 获取值:
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中的一个已知缺陷,但答案很老,如果有办法让位图正确,请告诉我。
【问题讨论】:
PHOTO_URI 是文本,而不是 blob 【参考方案1】:公共静态最终字符串 PHOTO_URI
在 API 级别 11 中添加 可用于检索联系人全尺寸照片的 URI。如果 PHOTO_FILE_ID 不为空,这将使用基于 CONTENT_URI 的 URI 填充。否则,这将填充与 PHOTO_THUMBNAIL_URI 相同的值。照片可以通过 URI(此字段)或 ID(请参阅 PHOTO_ID)来引用。如果 PHOTO_FILE_ID 或 PHOTO_ID 不为空,则 PHOTO_URI 和 PHOTO_THUMBNAIL_URI 不应为空(但不一定反之亦然)。因此,使用 PHOTO_URI 是一种更可靠的检索联系人照片的方法。
类型:文本
常量值:“photo_uri”
这就是文档所说的,pskink 是对的,它返回一个字符串。还要添加 decodeStream 如果它无法解码图像数据并且它也不会产生任何异常,则返回 null ,所以要小心,在使用它之前检查值。
【讨论】:
以上是关于BitmapFactory.decodeStream 总是返回空值的主要内容,如果未能解决你的问题,请参考以下文章