为了账号安全,请及时绑定邮箱和手机立即绑定

无法在 ImageView 中显示从图库导出的图片

无法在 ImageView 中显示从图库导出的图片

慕娘9325324 2021-10-17 10:40:23
我正在创建一个需要在内部存储中存储一些多媒体文件的 Android 应用程序。用户可以从选择器中选择该多媒体文件。即使用户删除这些文件,这些文件也必须可用,因此它们会被复制到内部存储中。这是我的代码:final Bitmap bitm = MediaStore.Images.Media.getBitmap( this.getContentResolver(), uri );final int bitmapRawLength = bitm.getAllocationByteCount();final ByteBuffer byteBuffer = ByteBuffer.allocate( bitmapRawLength );bitm.copyPixelsToBuffer( byteBuffer );data = byteBuffer.array();final ByteArrayInputStream in = new ByteArrayInputStream( data );db.store( in );因此,组成图像的字节通过InputStream复制到内部存储中的普通文件中。显然它有效,因为文件有内容。稍后将图像加载到ImageView 中:private void loadImage(File imgFile){    if ( imgFile.exists() ) {        final Bitmap bitmap = BitmapFactory.decodeFile( mediaFile.getPath() );        this.ivPictureBox.setImageBitmap( bitmap );    } else {        this.abortDueToMissingFile( imgFile );    }    return;}不幸的是,这不起作用。当需要加载该图像时,ImageView变为空白,不显示任何内容。实际上,在日志中会出现以下消息:D/skia: --- Failed to create image decoder with message 'unimplemented'如果我在 Android Studio 中使用文件资源管理器并将图像导出到我的计算机,则 GwenView 会失败并显示消息“无法加载元数据”。我怎样才能正确地存储带有完整信息的图像,或者正确地显示它,无论哪种更容易或可行?
查看完整描述

2 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

愚蠢的我!

这很简单:

final InputStream in = this.getContentResolver().openInputStream( uri );

...并随心所欲地复制它。

这适用于具有 SCHEME_CONTENT 和 SCHEME_FILE 方案的 URI。


查看完整回答
反对 回复 2021-10-17
  • 2 回答
  • 0 关注
  • 889 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信