我的结构如下:
struct PixelBuffer
{
unsigned int width,height,stride;
PixelFormat format;
unsigned char * buffer;
}
我想将其转换为 IRandomAccessStream ^ 我该怎么做? (缓冲区指向的字节)
我不确定PixelFormat是否有所不同,如果有好的,但我们可以说它是 RGB 格式。
谢谢!
注意
我需要 SoftwareBitmap ^ 所以我的想法是获取IRandomAccessStream ^然后获取BitmapDecoder ^我将获得SoftwareBitmap ^如果有一些我不知道的快捷方式会很棒!
答案 0 :(得分:0)
如果您需要SoftwareBitmap ^,则无需通过Stream,您可以直接从缓冲区获取它
vector<unsigned char> bufferBGRA; // Convert your bytes to BGRA
DataWriter ^writer = ref new DataWriter();
writer->WriteBytes(Platform::ArrayReference<BYTE>(
bufferBGRA.data(),
width * height * 4)); // 4 channels (BGRA)
IBuffer ^buff= writer->DetachBuffer();
// Create SoftwareBitmap from buff
SoftwareBitmap^ softwareBitmap = ref new SoftwareBitmap(BitmapPixelFormat::Bgra8, width, height);
softwareBitmap->CopyFromBuffer(buff);
是的,在这种情况下 BGRA是有利的格式,因为您需要将缓冲区转换为 BitmapPixelFormat 支持的格式,如BGRA