不支持的位图格式。字节数组到软件位图(UWP C#)

不支持的位图格式。字节数组到软件位图(UWP C#),c#,uwp,win2d,C#,Uwp,Win2d,帮助无法将字节数组转换为软件位图。错误: WriteableBitmap b=新的WriteableBitmap(重量*帧大小,高度*帧大小); //WriteableBitmap使用BGRA格式,即每像素4字节。 byte[]imageArray=新字节[b.PixelHeight*b.PixelWidth*4]; 对于(int i=0;i

帮助无法将字节数组转换为软件位图。错误:

WriteableBitmap b=新的WriteableBitmap(重量*帧大小,高度*帧大小);
//WriteableBitmap使用BGRA格式,即每像素4字节。
byte[]imageArray=新字节[b.PixelHeight*b.PixelWidth*4];
对于(int i=0;i
方法支持
位图像素格式.Bgra8
格式。
BitmapPixelFormat.Bgra8
对应的
CanvasBitmap
格式为
DirectXPixelFormat.B8G8R8A8UIntNormalized
。根据Win2D的功能:

如果有疑问,像素格式B8G8R8A8UIntNormalized和CanvasAlphaMode预乘在大多数情况下都是良好的默认值

创建
软件位图时,可能需要使用方法
CreateCopyFromBuffer(IBuffer,BitmapPixelFormat,Int32,Int32,BitmapAlphaMode)
BitmapAlphaMode
设置为
预乘
,以使格式兼容

SoftwareBitmap outputBitmap = SoftwareBitmap.CreateCopyFromBuffer(b.PixelBuffer, BitmapPixelFormat.Bgra8, b.PixelWidth, b.PixelHeight, BitmapAlphaMode.Premultiplied); 
SoftwareBitmap outputBitmap = SoftwareBitmap.CreateCopyFromBuffer(b.PixelBuffer, BitmapPixelFormat.Bgra8, b.PixelWidth, b.PixelHeight, BitmapAlphaMode.Premultiplied);