我正在创建一个需要在内部存储中存储一些多媒体文件的 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。
添加回答
举报
0/150
提交
取消