【问题标题】:Xamarin android image URI to Byte arrayXamarin android 图像 URI 到字节数组
【发布时间】:2017-09-30 22:15:52
【问题描述】:

我只是想把图片上传到服务器。

当我从中选择图像时,我会获得该图像的 URI。 问题是如何将此 URI 转换为 byte[] 字节数组?

不多不少。这是我的问题

这是我一直在尝试的。

我试图重写这个https://colinyeoh.wordpress.com/2012/05/18/android-convert-image-uri-to-byte-array/ 到 C#

    public byte[] convertImageToByte(Android.Net.Uri uri)
    {
        byte[] data = null;
        try
        {

            ContentResolver cr = this.ContentResolver;
            var inputStream = cr.OpenInputStream(uri);
            Bitmap bitmap = BitmapFactory.DecodeStream(inputStream);
            var baos = new ByteArrayOutputStream();
            bitmap.Compress(Bitmap.CompressFormat.Jpeg, 100, baos);
            data = baos.ToByteArray();
        }
        catch (FileNotFoundException e)
        {
            e.PrintStackTrace();
        }
        return data;
    }

但是错误...

Error CS1503: Argument `#3' cannot convert `Java.IO.ByteArrayOutputStream' expression to type `System.IO.Stream' (CS1503) (Foodle.Droid)

如何解决这个问题?或从图库中获取图像并将其转换为字节数组的新代码。

帮助!

【问题讨论】:

  • 您可以尝试使用 inputStream.Read() 读取所有数据,然后使用 BitmapFactory.DecodeByteArray(bytes, 0, bytes.Length);获取图像

标签: java c# android xamarin xamarin.android


【解决方案1】:
public byte[] convertImageToByte(Android.Net.Uri uri)
{
    Stream stream = ContentResolver.OpenInputStream(uri);   
    byte[] byteArray;

    using (var memoryStream = new MemoryStream())
    {
       stream.CopyTo(memoryStream);
       byteArray = memoryStream.ToArray();
    }
    return byteArray;
}

【讨论】:

  • 这里要解释什么?用户想要从 android 图像对象 (Android.Net.Uri) 中获取 byteArray,这个方法正在完成这项工作。
  • 附注最终,您可以使用 DI 并从 android 代码返回 Stream 流,并在共享代码中使用 MemoryStream。
  • 这个文件流是什么?
  • 这个文件流只是流
猜你喜欢
  • 2012-05-05
  • 2011-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-09
  • 2012-07-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多