【问题标题】:Covert xamarin.image into base 64 format将 xamarin.image 转换为 base64 格式
【发布时间】:2016-12-31 05:02:27
【问题描述】:

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

【问题讨论】:

标签: image xamarin xamarin.forms signaturepad


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    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 显示了如何在平台特定代码 here 中执行此操作。

    论坛帖子 (Convert Image to byte[]) 很好地讨论了为什么您无法从控件中获取它。

    【讨论】:

    • 感谢您的回复,但是除了保存和获取之外,我没有其他方法可以从 XAML 获取图像并将其转换为字节数组吗?
    【解决方案3】:

    你也可以这样做

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-06
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 2021-11-25
      • 2020-10-26
      • 2014-04-03
      相关资源
      最近更新 更多