BitmapFactory.decodeFile()返回null xamarin.android
调用此函数时,位图中没有图像/字符串。在我的应用程序中,我从库中选择图像并将其转换为base64。我已经针对这个问题调试了应用程序,所以我发现方法BitmapFactory.decodeFileimage path返回空值,即使我得到的路径完全正常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
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在黑板上,快乐编码: