如何将 RGB 像素缓冲区转换为 IRandomAccessStream^

How to convert RGB Pixel Buffer to IRandomAccessStream^

我有这样的结构:

struct PixelBuffer
{
    unsigned int width,height,stride;
    PixelFormat format;
    unsigned char * buffer;
}

我想将其转换为 IRandomAccessStream^ 我该怎么做? (缓冲区指向的字节数)

我不确定 PixelFormat 是否有所不同,是否有有利的,但假设它是 RGB 格式。

谢谢!

备注

我需要 SoftwareBitmap^ 所以我的想法是获取 IRandomAccessStream^,然后获取 BitmapDecoder^,如果有一些我不知道的快捷方式,我将从中获取 SoftwareBitmap^那太好了!

如果你需要SoftwareBitmap^就不需要通过Stream了,直接从buffer中获取就可以了

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