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

我正在创建一个需要在内部存储中存储一些多媒体文件的 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 会失败并显示消息“无法加载元数据”。


我怎样才能正确地存储带有完整信息的图像,或者正确地显示它,无论哪种更容易或可行?


慕娘9325324
浏览 898回答 2
2回答

30秒到达战场

愚蠢的我!这很简单:final InputStream in = this.getContentResolver().openInputStream( uri );...并随心所欲地复制它。这适用于具有 SCHEME_CONTENT 和 SCHEME_FILE 方案的 URI。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java