使用IJL库遇到的问题
//----------------------------------------------------------
// An example using the Intel(R) JPEG Library:
// -- 编码 DIB 为 JPEG 缓冲.
//----------------------------------------------------------
BOOL lg_Bitmap::EncodeToJPEGBuffer(
BYTE* lpRgbBuffer,
int32 nWidth,
int32 nHeight,
BYTE** lppJpgBuffer,
DWORD* lpdwJpgBufferSize)
{
BOOL bres;
IJLERR jerr;
DWORD dwRgbBufferSize;
BYTE* lpTemp;
// Allocate the IJL JPEG_CORE_PROPERTIES structure.
JPEG_CORE_PROPERTIES jcprops;
bres = TRUE;
__try
{
// Initialize the Intel(R) JPEG Library.
jerr = ijlInit(&jcprops);
if(IJL_OK != jerr)
{
bres = FALSE;
__leave;
}
jcprops.DIBWidth = nWidth;
jcprops.DIBHeight = -nHeight; // Implies a bottom-up DIB.
jcprops.DIBBytes = lpRgbBuffer + sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);
jcprops.DIBChannels = 3;
jcprops.DIBPadBytes = IJL_DIB_PAD_BYTES(jcprops.DIBWidth, jcprops.DIBChannels);
jcprops.DIBColor = IJL_BGR;//;
dwRgbBufferSize = (jcprops.DIBWidth * jcprops.DIBChannels + jcprops.DIBPadBytes) * abs(jcprops.DIBHeight);
lpTemp = new BYTE [dwRgbBufferSize];
if(NULL == lpTemp)
{
bres = FALSE;
__leave;
}
// Set up information to write from the pixel buffer.
jcprops.JPGWidth = jcprops.DIBWidth;
jcprops.JPGHeight = abs(jcprops.DIBHeight);
jcprops.JPGFile = NULL;
jcprops.JPGBytes = lpTemp;
jcprops.JPGSizeBytes = dwRgbBufferSize;
jcprops.JPGChannels = 3;
jcprops.JPGColor = IJL_YCBCR;
jcprops.JPGSubsampling = IJL_411; // 4:1:1 subsampling.
jcprops.jquality = 75; // Select "good" image quality
// Write the actual JPEG image from the pixel buffer.
jerr = ijlWrite(&jcprops,IJL_JBUFF_WRITEWHOLEIMAGE);
if(IJL_OK != jerr)
{
bres = FALSE;
__leave;
}
} // __try
__finally
{
if(FALSE == bres)
{
if(NULL != lpTemp)
{
delete[] lpTemp;
lpTemp = NULL;
}
}
*lppJpgBuffer = lpTemp;
*lpdwJpgBufferSize = jcprops.JPGSizeBytes;
// Clean up the Intel(R) JPEG Library.
ijlFree(&jcprops);
}
return bres;
} // EncodeToJPEGBuffer()
使用:
DWORD* lpdwJpgBufferSize=0;
BYTE**lppJpgBuffer=NULL;
int32 nWidth=1024;
int32 nHeight=768;
lg_Bitmap kl;
kl.EncodeToJPEGBuffer((byte*)lpData,nWidth,nHeight,lppJpgBuffer,lpdwJpgBufferSize);
运行到*lppJpgBuffer = lpTemp;时出现Access Violation错误,请教各位高手