这可能是一个简单的问题,但我无法让它工作。我使用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 数组。拥有数组后,您可以将其保存到您的应用程序具有权限的任何文件夹中。保存时,您应该具有相同的路径。您可以使用路径通过图像视图或媒体选取器加载图像。