实现回放中视频图像抓取的源码

王朝vc·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

bool CDXGraph::SnapshotBitmap(const char * outFile)

{

if (mBasicVideo)

{

long bitmapSize = 0;

if (SUCCEEDED(mBasicVideo->GetCurrentImage(&bitmapSize, 0)))

{

bool pass = false;

unsigned char * buffer = new unsigned char[bitmapSize];

if (SUCCEEDED(mBasicVideo->GetCurrentImage(&bitmapSize, (long *)buffer)))

{

BITMAPFILEHEADER hdr;

LPBITMAPINFOHEADER lpbi;

lpbi = (LPBITMAPINFOHEADER)buffer;

int nColors = 1 << lpbi->biBitCount;

if (nColors > 256) nColors = 0;

hdr.bfType = ((WORD) ('M' << 8) | 'B'); //always is "BM"

hdr.bfSize = bitmapSize + sizeof( hdr );

hdr.bfReserved1 = 0;

hdr.bfReserved2 = 0;

hdr.bfOff Bits = (DWORD) (sizeof(BITMAPFILEHEADER) + lpbi->biSize + nColors *sizeof (RGBQUAD));

CFile bitma pFile(outFile, CFile::modeReadWrite | CFile::modeCreate | CFile::typeBinary);

bitmapFile.Write(&hdr, sizeof(BITMAPFILEHEADER));

bitmapFile.Write(buffer, bitmapSize);

bitmapFile.Close();

pass = true;

}

delete [] buffer;

return pass;

}

}

return false;

}}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航