BitmapFactory.decodeFile()返回null xamarin.android

BitmapFactory.decodeFile()返回null xamarin.android,xamarin.android,Xamarin.android,调用此函数时,位图中没有图像/字符串。在我的应用程序中,我从库中选择图像并将其转换为base64。我已经针对这个问题调试了应用程序,所以我发现方法BitmapFactory.decodeFileimage path返回空值,即使我得到的路径完全正常 private void _btnResimYolu_Click(object sender, System.EventArgs e) { var imageIntent = new Intent(); imageIntent

调用此函数时,位图中没有图像/字符串。在我的应用程序中,我从库中选择图像并将其转换为base64。我已经针对这个问题调试了应用程序,所以我发现方法BitmapFactory.decodeFileimage path返回空值,即使我得到的路径完全正常

 private void _btnResimYolu_Click(object sender, System.EventArgs e)
 {
     var imageIntent = new Intent();
     imageIntent.SetType("image/*");

     imageIntent.SetAction(Intent.ActionGetContent);
     StartActivityForResult(Intent.CreateChooser(imageIntent, "Select Image"), 0);
 } 

 protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
 {
     base.OnActivityResult(requestCode, resultCode, data);

     if (resultCode == Result.Ok)
     {
         var imageView = FindViewById<ImageView>(Resource.Id.img1);
         imageView.SetImageURI(data.Data);
         _imageTest.Text = data.DataString;                   
     }   
 }

 private void _gonder_Click(object sender, System.EventArgs e)
 {           
     string uriString = _imageTest.Text;
     _bitmap = BitmapFactory.DecodeFile(uriString);
     MemoryStream stream = new MemoryStream();
     _bitmap.Compress(Bitmap.CompressFormat.Jpeg, 100, stream);
     byte[] ba = stream.ToArray();
     string bal = Base64.EncodeToString(ba, Base64.Default);
 }
BitmapFactory.decode文件返回空值

问题是,您获取的图像路径错误,因此BitmapFactory.DecodeFileUristing始终返回null。OnActivityResult中的data.DataString是我的设备:

[0:] data.Data = content://com.miui.gallery.open/raw/%2Fstorage%2Femulated%2F0%2FDCIM%2FCamera%2FIMG_20171125_143057.jpg
解决方案: 选择图片时,应将其Uri转换为实际路径。你可以参考我的答案:。然后,按如下方式修改代码:

protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
    base.OnActivityResult(requestCode, resultCode, data);
    if (requestCode == Result.Ok)
    {
        var uri = data.Data;

        //You could find the GetActualPathFromFile() method code in the above link I have post.
        string path = GetActualPathFromFile(uri);

        _imageTest.Text = path ; 

        System.Diagnostics.Debug.WriteLine("data.Data = " + data.Data);
        System.Diagnostics.Debug.WriteLine("path = " + path);
    }
}
图像路径:

[0:] path = /storage/emulated/0/DCIM/Camera/IMG_20171125_143057.jpg
然后您可以使用BitmapFactory.decode文件来实现您的功能

更新:
请确保您具有写入外部存储权限,自Android 6.0以来,您必须这样做。

请格式化问题中的代码。@Men在黑板上,快乐编码: