我正在尝试从Gallery中选择一个存储在外部的图像。然后我在OnActivityResult
中捕获数据。然后,我想使用这些行获取所选图像的字节数组数据。
protected override async void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
...
var imageSelected = File.ReadAllBytes(data.Data.Path);
...
}
然而,我收到以下错误:
System.IO.DirectoryNotFoundException: Could not find a part of the path "/external/images/media/149144".
/external/images/media/149144
是data.Data.Path
的值。另请注意,我在androidmanifest中添加了READ_EXTERNAL_STORAGE
权限
非常感谢任何帮助。
答案 0 :(得分:1)
我正在尝试从Gallery中选择一个存储在外部的图像。然后我在OnActivityResult中捕获数据。然后,我想使用这些行获取所选图像的字节数组数据。
您从ContentUrl
获得data.Data.Path
,而File.ReadAllBytes
无法从ContentUrl
找到文件。
如果要从结果中获取字节数据,可以从Bitmap
创建ContentUrl
并将Bitmap
直接转换为字节数组,如下所示:
protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data)
{
base.OnActivityResult(requestCode, resultCode, data);
try
{
Bitmap bitmap = MediaStore.Images.Media.GetBitmap(this.ContentResolver, data.Data);
using (MemoryStream stream = new MemoryStream())
{
bitmap.Compress(Bitmap.CompressFormat.Jpeg,100, stream);
byte[] array=stream.ToArray();
}
}
catch (Java.IO.IOException e)
{
//Exception Handling
}
}