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

如何将imagesource转换为uwp中的字节[]或流?,uwp,Uwp,我有一个ImageSource ImageSource,想转换成字节数组或流,怎么转换?我试过了 WriteableBitmap bitmap = imageSource as WriteableBitmap; var stream = bitmap.PixelBuffer.AsStream(); 但是位图为空…您应该确保imageSource为WriteableBitmap,因为它可以是BitmapImage或WriteableBitmap 如果imageSource为WriteableBi

我有一个ImageSource ImageSource,想转换成字节数组或流,怎么转换?我试过了

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

但是位图为空…

您应该确保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);
}
专用异步任务ToBase64(RenderTargetBitmap位图)
{
var bytes=(wait bitmap.GetPixelsAsync()).ToArray();
返回wait ToBase64(字节,(uint)bitmap.PixelWidth,(uint)bitmap.PixelHeight);
}

请参阅(中文):

您应该确保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);
}
专用异步任务ToBase64(RenderTargetBitmap位图)
{
var bytes=(wait bitmap.GetPixelsAsync()).ToArray();
返回wait ToBase64(字节,(uint)bitmap.PixelWidth,(uint)bitmap.PixelHeight);
}

请参阅(中文):

确定要获取原始像素缓冲区,或者获取编码帧,例如PNG?恐怕这在uwp中不起作用。确定要获取原始像素缓冲区,或者获取编码帧,例如PNG?恐怕这在uwp中不起作用。对于WriteableBitmap,您可以从此处下载/安装:无论如何,链接已断开,您的代码不够清晰。例如,
.UriSource
在哪个对象上调用?@YoavFeuerstein Thx,我会修复它。对于WriteableBitmap,您可以从这里下载/安装:无论如何,链接已断开,您的代码不够清晰。例如,
.UriSource
在哪个对象上被调用?@YoavFeuerstein Thx,我修复了它。