在Xamarin中捕获后显示图像

时间:2018-10-25 01:06:24

标签: xamarin xamarin.android

我一直在尝试制作一个通过页面渲染调用相机的应用程序。我使用了Xamarin的Custom Renderer。我的问题是,单击后需要将图片发送到“本地”中的其他页面/活动,但是当前它将图片保存在设备的图库中。

例如:我单击该图像,然后显示该图像并显示消息“是否要保存它?”。这必须在本地而不是PCL中完成。我一直在尝试通过意图,但这是行不通的。

我现在所做的所有代码就是将图像保存到图库中。

try
 {

    var absolutePath = Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryDcim).AbsolutePath;
    var folderPath = absolutePath + "/Camera";
    var filePath = System.IO.Path.Combine(folderPath, string.Format("photo_{0}.jpg", Guid.NewGuid()));

    var fileStream = new FileStream(filePath, FileMode.Create);
    await image.CompressAsync(Bitmap.CompressFormat.Jpeg, 100, fileStream);
    fileStream.Close();
    image.Recycle();

    // imageByte = ((byte[])image);

    var intent = new Android.Content.Intent(Android.Content.Intent.ActionMediaScannerScanFile);

    var file = new Java.IO.File(filePath);
    var uri = Android.Net.Uri.FromFile(file);
    intent.SetData(uri);
    //intent.PutExtra("image", imageByte);

    MainActivity.Instances.SendBroadcast(intent);

 }

1 个答案:

答案 0 :(得分:0)

解决了。通过意图传递位图。 活动1:

byte[] imageByte;
        var image = textureView.Bitmap;
        MemoryStream memStream = new MemoryStream();
       // ByteArrayOutputStream _bs = new ByteArrayOutputStream();
        await image.CompressAsync(Bitmap.CompressFormat.Jpeg, 100, memStream);

        imageByte = memStream.ToArray();
        Intent i = new Intent(this.Context, typeof(CameraDisplay));

        i.PutExtra("image", imageByte);
        activity.StartActivity(i);

活动2:

byte[] Image = Intent.GetByteArrayExtra("image");

imageView = FindViewById(Resource.Id.imageView1);

        Bitmap bitmap = BitmapFactory.DecodeByteArray(Image, 0, Image.Length);

      imageView.SetImageBitmap(bitmap);