///////ijl中函数RGB压缩到缓冲区///////////////
bool EncodeToJpgBUFFER(
BYTE* lpRgbBuffer,//in
DWORD dwWidth,//in
DWORD dwHeight,//in
BYTE** lppJpgBuffer,//out
DWORD* lpdwJpgBufferSize)//out
{
bool bres;
IJLERR jerr;
DWORD dwRgbBufferSize;
BYTE *lpTemp;
JPEG_CORE_PROPERTIES jcprops;
bres=true;
jerr=ijlInit(&jcprops);
if(IJL_OK!=jerr)
{
OutputDebugString("ijlInit³õʼ»¯´íÎó");
bres=false;
goto err_process;
}
dwRgbBufferSize=dwWidth*dwHeight*3;
lpTemp=NULL;
lpTemp=new BYTE[dwRgbBufferSize];
if(NULL==lpTemp)
{
OutputDebugString("·ÖÅäÁÙʱ»º³åÇølpTempʧ°Ü");
bres=false;
goto err_process;
}
jcprops.DIBWidth=dwWidth;
jcprops.DIBHeight=dwHeight;
jcprops.DIBBytes=lpRgbBuffer;
jcprops.DIBPadBytes=0;
jcprops.DIBChannels=3;
jcprops.DIBColor=IJL_RGB;
jcprops.JPGWidth=dwWidth;
jcprops.JPGHeight=dwHeight;
jcprops.JPGFile=NULL;
jcprops.JPGBytes=lpTemp;
jcprops.JPGSizeBytes=dwRgbBufferSize;
jcprops.JPGChannels=3;
jcprops.JPGColor=IJL_YCBCR;
jcprops.JPGSubsampling=IJL_411;
jcprops.jquality=75;
jerr=ijlWrite(&jcprops,IJL_JBUFF_WRITEWHOLEIMAGE);
if(IJL_OK!=jerr)
{
char szDebug[256];
sprintf(szDebug, "JPEGѹËõʧ°Ü:%d, Width:%d, Height:%d", jerr, jcprops.JPGWidth,
jcprops.JPGHeight);
OutputDebugString(szDebug);
bres=false;
goto err_process;
}
*lppJpgBuffer=lpTemp;
*lpdwJpgBufferSize=jcprops.JPGSizeBytes;
ijlFree(&jcprops);
err_process:
if(false==bres)
{
if(NULL!=lpTemp)
{
delete[] lpTemp;
lpTemp=NULL;
}
}
return bres;
}