我有一个ImageSource imageSource,想要转换为字节数组或流,怎么样?我试过
WriteableBitmap bitmap = imageSource as WriteableBitmap;
var stream = bitmap.PixelBuffer.AsStream();
但是位图是空的......
答案 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);
}
答案 1 :(得分:0)
如果我不误解您的问题,您必须从imageSource获取存储文件并在流中重新打开它以获得字节数组作为结果。在这里回答了类似的问题https://social.msdn.microsoft.com/Forums/en-US/f13a50f4-adf9-4c61-86b7-8ea02f108eac/uwpc-bitmapimage-to-byte-array?forum=wpdevelop