我正在尝试将文本添加到我从directshow过滤器获得的位图中。首先我尝试使用gdiplus但是没有用。所以现在我只需要调用一个操作位图的.Net程序。
问题是我不知道如何将文件中的位图重新加载到directshow中的样本缓冲区。
这是我的代码:
Bitmap bmp(640, 480, 2560, 139273, newBuffer);
//save
CLSID pngClsid;
GetEncoderClsid(L"image/png", &pngClsid);
WCHAR* file = L"D:\\TEMP\\sample.bmp";
bmp.Save(file, &pngClsid, NULL);
std::string command("D:\\yourcontrol\\bitmapDraw.exe D:\\TEMP\\sample.bmp \"test text\" D:\\yourcontrol\\out.bmp");
//manipulate
system(command.c_str());
//load
Bitmap bmp2(D:\\yourcontrol\\out.bmp");
如何将位图从文件转发到样本?
答案 0 :(得分:0)
媒体样本是滤波器之间协议的一部分,在特定引脚连接上。您通常不会加载媒体样本,除非您运行过滤器并且您正在其输出引脚上传送数据。
在后一种情况下,您有媒体类型的媒体样本,您可以分配和初始化媒体样本,您的任务很简单:加载图像,访问其数据,memcpy
进入媒体样本缓冲区,确保媒体type匹配图像格式(否则你负责转换)。完成后,您就像通常那样提供媒体示例(PushSource Filter是Windows SDK上最接近的示例)。