如何将imagesource转换为byte []或uwp中的流?

时间:2017-10-11 12:06:02

标签: uwp

我有一个ImageSource imageSource,想要转换为字节数组或流,怎么样?我试过

WriteableBitmap bitmap = imageSource as WriteableBitmap;
var stream = bitmap.PixelBuffer.AsStream();

但是位图是空的......

2 个答案:

答案 0 :(得分:0)

你应该确定imageSource是WriteableBitmap,因为它可以是BitmapImage或WriteableBitmap ......

如果imageSource是WriteableBitmap,您可以编写代码。

但是如果imageSource是BitmapImage,你应该使用WriteableBitmapEx

首先使用nuget下载WriteableBitmapEx。

然后您可以将其更改为WriteableBitmap。

 WriteableBitmap image = await BitmapFactory.New(1, 1).FromContent((BitmapImage).UriSource);

然后你可以将WriteableBitmap转换为流。

如果你的imageSource是RenderTargetBitmap,你可以使用这段代码。

private async Task<string> ToBase64(RenderTargetBitmap bitmap)
{
    var bytes = (await bitmap.GetPixelsAsync()).ToArray();
    return await ToBase64(bytes, (uint)bitmap.PixelWidth, (uint)bitmap.PixelHeight);
}

见(中文):https://lindexi.gitee.io/post/win10-uwp-%E8%AF%BB%E5%8F%96%E4%BF%9D%E5%AD%98WriteableBitmap-BitmapImage.html

答案 1 :(得分:0)

如果我不误解您的问题,您必须从imageSource获取存储文件并在流中重新打开它以获得字节数组作为结果。在这里回答了类似的问题https://social.msdn.microsoft.com/Forums/en-US/f13a50f4-adf9-4c61-86b7-8ea02f108eac/uwpc-bitmapimage-to-byte-array?forum=wpdevelop