这可能是一个简单的问题,但我无法让它发挥作用。 使用TakePhotoAsync()从相机设置图片没有问题。
问题是我将图片上传到BlobStorage,我想从Blob Byte数组中获取Plugin.Media.Abstractions.MediaFile。 类似的东西:
MediaFile file = new MediaFile(...);
有谁知道怎么做?
提前致谢
编辑:基于答案,我的问题似乎不够明确。 我可以拍照并将其上传到blob存储区。这是我想做的反面而不是如何看待。 我想从Blob存储中下载图片,我将其作为字节数组获取,然后从中获取MediaFile。
答案 0 :(得分:1)
您可以通过提供Func
来返回字节数组的流来实现:
var image = new MediaFile("C:\fake-blob-filename.jpg", () =>
{
new MemoryStream(blobBytes); // Your byte array is the argument
});
答案 1 :(得分:0)
首先,您需要使用此代码拍摄图像:
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();
}
}
将你的byte []发布到blob存储
答案 2 :(得分:0)
要从blob下载图像,请使用HttpClient并将其下载为Byte数组。 获得阵列后,您可以将其保存到您的应用具有权限的任何文件夹中。 当你保存它时,你应该有相同的路径。 您可以使用路径通过“图像”视图或“媒体选择器”加载图像。