如何在Xamarin.forms上获取图像的byte[]



我正在使用Xamarin.Forms,所以当我试图从Gallery中选择照片时(我使用https://components.xamarin.com/view/mediaplugin处理照片),我需要获得图片的byte[]才能在web服务上使用,我该怎么做。

检查我的代码如下:

ChoosePhotoButton.Clicked += async (sender, args) =>
{
    if (!CrossMedia.Current.IsPickPhotoSupported)
    {
        DisplayAlert("Photos Not Supported", ":( Permission not granted to photos.", "OK");
        return;
    }
    var file = await CrossMedia.Current.PickPhotoAsync();

    if (file == null)
        return;
    image.Source = ImageSource.FromStream(() =>
        {
            var stream = file.GetStream();
            file.Dispose();
            return stream;
        });
    OptionalInfoPage.DriverImage = image;
};

如果您的代码返回有效的流,我认为您做得很好!只是试着添加这个而不是返回流,

byte[] ImageBytes = stream.ToArray();
return ImageBytes;

我使用file.GetStream().CopyTo(memoryStream)直接从文件中获取它,检查以下代码:

  using (var memoryStream = new System.IO.MemoryStream())
   {
          file.GetStream().CopyTo(memoryStream);
       // file.Dispose();
          byte[] ImageBytes  = memoryStream.ToArray();
  }

最新更新