1

我需要将 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”是图像名称。

4

3 回答 3

6

获得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);

我在这里找到了

于 2017-05-27T21:48:07.943 回答
0

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

您将更好地使用媒体插件并将其保存到磁盘。然后通过内存流加载并转换。

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

  1. GetImageAsJpgAsync(int quality = 90, int desiredWidth = 0, int desiredHeight = 0)
  2. GetImageAsPngAsync(int desiredWidth = 0, int desiredHeight = 0)

SO 问题 - Convert Image into byte array in Xamarin.Forms 在这里展示了如何在平台特定代码中执行操作。

论坛主题(Convert Image to byte[])很好地讨论了为什么不能从控件中获取它。

于 2016-08-24T07:34:57.617 回答
0

您也可以按以下方式执行此操作

var base64String = Convert.ToBase64String(File.ReadAllBytes(file.Path))
于 2020-11-18T18:39:31.917 回答