在试图理解如何将mediafoundation rgb32数据转换为可以加载到图像/位图小部件或保存为位图文件的位图数据时,我想知道RGB32数据实际上是什么,与BMP数据相比较具有?
是否只是丢失了头位信息或位图文件的宽度,高度等关键信息?
与位图文件或内存流中的BMP数据相比,RGB32实际上意味着什么?
答案 0 :(得分:1)
您通常将IMFMediaBuffer
附加到IMFSample
的32位RGB。这只是位图位,没有特定于格式的元数据。您可以通过获取媒体缓冲区指针来访问此数据,例如,通过执行IMFSample::ConvertToContiguousBuffer
调用,然后执行IMFMediaBuffer::Lock
来获取像素数据指针。
获取的缓冲区与标准.BMP文件中的数据兼容(可能在某些情况下,行可能的顺序相反),只是.BMP文件在此数据之前有一个标头。 .BMP文件通常具有BITMAPFILEHEADER
结构,然后是BITMAPINFOHEADER
,然后是有问题的缓冲区。如果你一个接一个地分别初始化它,这会产生一个有效的图片文件。这里的This和other个问题显示了从位图位创建.BMP文件的方法。
请参阅this GitHub code snippet,它非常接近所请求的任务,可能是一个很好的起点。