我们如何从imageToUpload.Source接收图像文件并将其传递给另一个方法

时间:2019-08-09 04:17:53

标签: xamarin xamarin-forms-4

如何接收显示在.deb下的“照片”并传递给Xamarin Forms中的变量?我在此行<Image x:Name="imageToUpload" WidthRequest="40" HeightRequest="40"/>处需要获取文件/图像,需要将其传递到var file = await CrossMedia.Current.TakePhotoAsync(....方法中并进一步保存到SQLite数据库中

enter image description here

RegisterSave_OnClicked()

//注册按钮保存下面的代码:

 var file = await CrossMedia.Current.TakePhotoAsync(new StoreCameraMediaOptions
                {
                    Directory = "Pictures",
                    Name = "test.jpg",
                    PhotoSize = PhotoSize.Small,
                    CompressionQuality = 75,
                    CustomPhotoSize = 5,
                    DefaultCamera = CameraDevice.Front,
                });

enter image description here

1 个答案:

答案 0 :(得分:1)

如果要将imageSource保存到数据库,我们可以将其转换为byte []数组。

public  byte[] ReadFully(Stream input)
{
    byte[] buffer = new byte[16*1024];
    using (MemoryStream ms = new MemoryStream())
    {
        int read;
        while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
        {
            ms.Write(buffer, 0, read);
        }
        return ms.ToArray();
    }
}

MediaFile具有GetStream().

您可以将其用于流,然后将其转换为字节[]。这是一种方法:

1。在contentPage中定义流

Stream imageStream;

拍照后将其初始化。

imageStream = file.GetStream();

点击按钮后调用它

var imageArr= ReadFully(imageStream );