将xamarin.image隐藏为base 64格式

时间:2016-08-24 07:23:32

标签: image xamarin xamarin.forms signaturepad

我需要将xamarin表单图像转换为base64格式,任何人都可以帮我这个吗?

这就是我尝试这样做的方式,但它确实有效。

var inputStream = signatureImage.Source.GetValue(UriImageSource.UriProperty);

            //Getting Stream as a Memorystream
            var signatureMemoryStream = inputStream as MemoryStream;

            if (signatureMemoryStream == null)
            {
                signatureMemoryStream = new MemoryStream();
                inputStream.CopyTo(signatureMemoryStream);
            }

            //Adding memorystream into a byte array
            var byteArray = signatureMemoryStream.ToArray();

            //Converting byte array into Base64 string
            base64String = Convert.ToBase64String(byteArray);

" signatureImage"是图像名称。

3 个答案:

答案 0 :(得分:5)

获得file路径后,您可以使用以下适用于我的代码。

var stream = file.GetStream();
var bytes = new byte [stream.Length];
await stream.ReadAsync(bytes, 0, (int)stream.Length);
string base64 = System.Convert.ToBase64String(bytes);

我发现它here

答案 1 :(得分:0)

图像只是Xamarin表单中用于显示图像的控件。 它不是可以从中获取图像字节数组的东西。

您最好使用Media Plugin并将其保存到磁盘。然后通过内存流加载并转换。

您也可以使用FFImageLoading。它有两种方法可供您使用:

  1. GetImageAsJpgAsync(int quality = 90, int desiredWidth = 0, int desiredHeight = 0)
  2. GetImageAsPngAsync(int desiredWidth = 0, int desiredHeight = 0)
  3. SO问题 - Convert Image into byte array in Xamarin.Forms显示了如何在特定于平台的代码here中执行此操作。

    论坛帖子(Convert Image to byte[])对你为何无法从控件中获取它进行了很好的讨论。

答案 2 :(得分:0)

您也可以按照以下步骤进行操作

var base64String = Convert.ToBase64String(File.ReadAllBytes(file.Path))