不支持的位图格式。字节数组到软件位图(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);