最近在做个视频会议软件,想对捕捉到的图像进行缩小显示,但并不成功。搜了很久,网上都大多出处自同一篇文章,解决不了我的问题,请各位帮忙。
以下代码是希望以640X480的画幅捕捉,之后以320X240的方式来显示,然而并不成功。
代码如下:
在头文件中定义:
#define QCIF_WIDTH 640
#define QCIF_HEIGHT 480
#define IMAGE_WIDTH QCIF_WIDTH
#define IMAGE_HEIGHT QCIF_HEIGHT
在实现文件中有如下:
hdib=::DrawDibOpen();
//定义BitMap。
m_bmpinfo=new BITMAPINFO;
m_bmpinfo->bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
m_bmpinfo->bmiHeader.biWidth=IMAGE_WIDTH;
m_bmpinfo->bmiHeader.biHeight=IMAGE_HEIGHT;
m_bmpinfo->bmiHeader.biPlanes=1;
m_bmpinfo->bmiHeader.biBitCount=24;
m_bmpinfo->bmiHeader.biCompression=0;
m_bmpinfo->bmiHeader.biSizeImage=0;
m_bmpinfo->bmiHeader.biXPelsPerMeter=0;
m_bmpinfo->bmiHeader.biYPelsPerMeter=0;
m_bmpinfo->bmiHeader.biClrUsed=0;
m_bmpinfo->bmiHeader.biClrImportant=0;
if(hdib!=NULL)
{
::DrawDibBegin(hdib,
m_hdc,
320,// don't stretch
240,// don't stretch
&m_bmpinfo->bmiHeader,
IMAGE_WIDTH, // width of image
IMAGE_HEIGHT, // height of image
DDF_SAME_DRAW
);
}
::DrawDibDraw(hdib,
m_hdc,
500,// dest : left pos
100,// dest : top pos
320, // don't zoom x
240, // don't zoom y
&m_bmpinfo->bmiHeader, // bmp header info
lphdr->lpData, // bmp data
0, // src :left
0, // src :top
IMAGE_WIDTH, // src : width
IMAGE_HEIGHT, // src : height
DDF_SAME_DRAW // use prev params....
);
::DrawDibEnd(hdib);
::DrawDibClose(hdib);
以下代码是希望以640X480的画幅捕捉,之后以320X240的方式来显示,然而并不成功。
代码如下:
在头文件中定义:
#define QCIF_WIDTH 640
#define QCIF_HEIGHT 480
#define IMAGE_WIDTH QCIF_WIDTH
#define IMAGE_HEIGHT QCIF_HEIGHT
在实现文件中有如下:
hdib=::DrawDibOpen();
//定义BitMap。
m_bmpinfo=new BITMAPINFO;
m_bmpinfo->bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
m_bmpinfo->bmiHeader.biWidth=IMAGE_WIDTH;
m_bmpinfo->bmiHeader.biHeight=IMAGE_HEIGHT;
m_bmpinfo->bmiHeader.biPlanes=1;
m_bmpinfo->bmiHeader.biBitCount=24;
m_bmpinfo->bmiHeader.biCompression=0;
m_bmpinfo->bmiHeader.biSizeImage=0;
m_bmpinfo->bmiHeader.biXPelsPerMeter=0;
m_bmpinfo->bmiHeader.biYPelsPerMeter=0;
m_bmpinfo->bmiHeader.biClrUsed=0;
m_bmpinfo->bmiHeader.biClrImportant=0;
if(hdib!=NULL)
{
::DrawDibBegin(hdib,
m_hdc,
320,// don't stretch
240,// don't stretch
&m_bmpinfo->bmiHeader,
IMAGE_WIDTH, // width of image
IMAGE_HEIGHT, // height of image
DDF_SAME_DRAW
);
}
::DrawDibDraw(hdib,
m_hdc,
500,// dest : left pos
100,// dest : top pos
320, // don't zoom x
240, // don't zoom y
&m_bmpinfo->bmiHeader, // bmp header info
lphdr->lpData, // bmp data
0, // src :left
0, // src :top
IMAGE_WIDTH, // src : width
IMAGE_HEIGHT, // src : height
DDF_SAME_DRAW // use prev params....
);
::DrawDibEnd(hdib);
::DrawDibClose(hdib);