【问题标题】:create image file from byte array in documents Xamarin Android从文档 Xamarin Android 中的字节数组创建图像文件
【发布时间】:2017-10-09 12:24:03
【问题描述】:

谁能帮助我了解如何从 Xamarin Android 文档中的字节数组创建图像文件并获取图像的新路径?

这是我的代码:

Stream stream = ContentResolver.OpenInputStream(data.Data);
Bitmap bitmap = BitmapFactory.DecodeStream(stream);
MemoryStream memStream = new MemoryStream();
bitmap.Compress(Bitmap.CompressFormat.Jpeg, 50, memStream);
byte[] picData;
picData = memStream.ToArray();

现在 picData 是字节数组,我需要在文档中创建一个 Jpeg 文件并获取新路径。谢谢提前。

【问题讨论】:

    标签: c# xamarin xamarin.android


    【解决方案1】:

    您可以绕过使用MemoryStream 并将Android Bitmap 直接解码/压缩为FileStream 以节省资源(内存和处理时间):

    var bitmap = BitmapFactory.BitmapFactory.DecodeStream(stream);
    var path = Path.Combine(GetExternalFilesDir(Environment.DirectoryDocuments).AbsolutePath, "sameImagePath.jpg");
    if (!File.Exists(path))
    {
        using (var filestream = new FileStream(path, FileMode.Create))
        {
            if (bitmap.Compress(Bitmap.CompressFormat.Jpeg, 50, filestream))
            {
                filestream.Flush();
            }
            else {} // handle failure case...
        }
    }
    bitmap.Recycle();
    bitmap.Dispose();
    

    【讨论】:

    • 谢谢,但我尝试了您的代码,但没有任何反应。请提供任何帮助。我需要从文档文件夹 xamarin android 中的字节数组创建一个新图像
    • @XamaX 您在查看哪个文档目录?我的示例会将其保存到 app 的 文档中(即/storage/emulated/0/Android/data/your.app.packagenamehere/files/Documents/sameImagePath.jpg) 如果您需要不同的目录,请相应地更新路径。
    猜你喜欢
    • 2018-01-09
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    • 2017-09-30
    • 1970-01-01
    • 2012-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多