媒体插件 - 从路径获取媒体文件



这可能是一个简单的问题,但我无法让它工作。我使用TakePhotoAsync((从相机设置图片没有问题。

问题是我将图片上传到 BlobStorage 并且我想从 blob Byte 数组中获取一个 Plugin.Media.Abstractions.MediaFile。像这样:

MediaFile file = new MediaFile(...);

有谁知道该怎么做?

提前致谢

编辑:根据答案,我的问题似乎不够清楚。我可以拍照并将其上传到 blob 存储。

这是

相反的,我想做,但不知道如何做。我想从 Blob 存储中下载图片,我以字节数组的形式获取图片,然后从中获取媒体文件。

首先,您需要使用以下代码拍摄图像:

EventImageFile = await CrossMedia.Current.TakePhotoAsync(
                        new StoreCameraMediaOptions
                        {
                            SaveToAlbum = true,
                            Directory = "your directory name",
                            Name = DateTime.Now + ".jpg",
                            DefaultCamera = CameraDevice.Rear,
                            //CompressionQuality = 10
                        });

然后你可以使用这段代码将其转换为 byte[]:

private byte[] ConvertMediaFileToByteArray(MediaFile file)
{
    using (var memoryStream = new MemoryStream())
    {
        file.GetStream().CopyTo(memoryStream);
        return memoryStream.ToArray();
    }
}

并将你的字节 [] 发布到 blob 存储

您可以通过

提供一个返回字节数组流的Func来做到这一点:

var image = new MediaFile("C:fake-blob-filename.jpg", () =>
            {
                new MemoryStream(blobBytes); // Your byte array is the argument
            });

若要从 blob 下载映像,请使用 HttpClient 并将其下载为 Byte 数组。拥有数组后,您可以将其保存到您的应用程序具有权限的任何文件夹中。保存时,您应该具有相同的路径。您可以使用路径通过图像视图或媒体选取器加载图像。

最新更新