我想使用 XLABS 从 Xamarin 窗体中的流中获取图像数据

本文关键字:获取 数据 图像 窗体 Xamarin XLABS | 更新日期: 2023-09-27 18:33:02

我正在尝试从流中获取原始图像数据,但不确定从这里开始。我有一个视图模型和一个页面,我在其中使用使用 XLABS 从库中选择图片的功能。

我的视图模型:

public ImageSource ImageSource
{
    get { return _ImageSource; }
    set { SetProperty (ref _ImageSource, value); }
}
private byte[] imageData;
public byte[] ImageData { get { return imageData; } }
private byte[] ReadStream(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();
    }
}
public async Task SelectPicture()
{
    Setup ();
    ImageSource = null;

    try
    {
        var mediaFile = await _Mediapicker.SelectPhotoAsync(new CameraMediaStorageOptions
            {
                DefaultCamera = CameraDevice.Front,
                MaxPixelDimension = 400
            });
        VideoInfo = mediaFile.Path;
        ImageSource = ImageSource.FromStream(() => mediaFile.Source);
    }
    catch (System.Exception ex)
    {
        Status = ex.Message;
    }
}

private static double ConvertBytesToMegabytes(long bytes)
{
    double rtn_value = (bytes / 1024f) / 1024f;
    return rtn_value;
}

我使用代码的页面:

MyViewModel photoGallery = null;
photoGallery = new MyViewModel ();
private async void btnPickPicture_Clicked (object sender, EventArgs e)
{
    await photoGallery.SelectPicture (); 
    imgPicked.Source = photoGallery.ImageSource; //imgPicked is my  image x:name from XAML.
}

我想使用 XLABS 从 Xamarin 窗体中的流中获取图像数据

这将初始化已在视图模型上定义的 ImageData 属性

VideoInfo = mediaFile.Path;
ImageSource = ImageSource.FromStream(() => mediaFile.Source);
// add this line
imageData = ReadStream(mediaFile.Source);