LEADTOOLS Raster Imaging C DLL Help > Function References > L_Jp2Save |
#include "l_bitmap.h"
L_LTJP2_API L_INT EXT_FUNCTION L_Jp2Save(hJp2, pszFile, pBitmap, eFormat, nBitsPerPixel, nQFactor, pSaveOptions, pSaveCallBack, pUserData)
L_HJP2 hJp2; |
/* JPEG 2000 engine handle */ |
L_TCHAR * pszFile; |
/* JPEG 2000 file name */ |
pBITMAPHANDLE pBitmap; |
/* pointer to the bitmap handle */ |
eJP2FILEFORMAT eFormat; |
/* output file format */ |
L_INT nBitsPerPixel; |
/* resulting files pixel depth */ |
L_INT nQFactor; |
/* quality factor */ |
pSAVEFILEOPTION pSaveOptions; |
/* pointer to optional extended save options */ |
FILESAVECALLBACK pSaveCallBack; |
/* optional callback function */ |
L_VOID * pUserData; |
/* pointer to more parameters for the callback */ |
Creates a file in any of the supported JPEG 2000 file formats.
Parameter |
Description |
hJp2 |
JPEG 2000 engine handle that was created by the L_Jp2Create function. |
pszFile |
Character string that contains the name of the JPEG 2000 file. |
pBitmap |
Pointer to the bitmap handle that describes the data to be saved. |
eFormat |
Output JPEG 2000 file format. |
nBitsPerPixel |
Resulting files pixel depth. Possible values are: 8, 12, 16, 24, 32, 48, 64, and 0. |
nQFactor |
Quality factor. This value determines the degree of loss in the compression process. Possible values are from 0 to 255. Zero (0) represents lossless compression. Values between 1 and 255 are interpreted as a compression ratio. |
pSaveOptions |
Pointer to optional extended save options. Pass NULL to use the default save options. |
pSaveCallBack |
Optional callback function for additional processing. If you do not provide a callback function, pass NULL. If you provide a callback function, use the function pointer as the value of this parameter. The callback function must adhere to the syntax described in FILESAVECALLBACK . |
pUserData |
Void pointer you can use to pass one or more additional parameters used by the callback function. To use this feature, assign a value to a variable, or create a structure that contains as many fields as you need. Then, in this parameter, pass the address of the variable or structure, casting it to L_VOID *. The callback function, which receives the address in its own pUserData parameter, can cast it to a pointer of the appropriate data type to access your variable or structure. If additional parameters are not needed, pass NULL. |
Returns
SUCCESS |
The function was successful. |
< 1 |
An error occurred. Refer to Return Codes. |
Comments
L_Jp2Save creates a file in any of the supported JPEG 2000 file formats. All of the currently-set engines boxes will also be saved in this file.
Required DLLs and Libraries
For a listing of the exact DLLs and Libraries needed, based on the toolkit version, refer to Files To Be Included With Your Application. |
Platforms
Win32, x64.
See Also
Example
This example saves/loads bitmap in JPEG 2000 file format
#define MAKE_IMAGE_PATH(pFileName) TEXT("C:\\Users\\Public\\Documents\\LEADTOOLS Images\\")pFileName L_LTJP2TEX_API L_INT Jp2SaveExample(L_UINT8 * pXMLData, L_SIZE_T uSize) { L_HJP2 hEngine; L_INT nRet; BITMAPHANDLE TmpBitmap; L_JP2_XML_BOX XMLBox; pL_JP2_MPEG7_BOX pMPEG7Box; L_UINT uNumOfMPEG7; /*Create JPEG 2000 engine handle*/ hEngine = L_Jp2Create(); /*Load an image*/ nRet = L_Jp2Read(hEngine,MAKE_IMAGE_PATH(TEXT("image1.jpx")),&TmpBitmap,0,ORDER_BGR,NULL, NULL, NULL, NULL); if(nRet != SUCCESS) return nRet; /*Read MPEG7 boxes*/ L_Jp2GetBoxes(hEngine, L_JPXB_MPEG7, (L_VOID**)&pMPEG7Box,&uNumOfMPEG7); /*Reset all engine boxes*/ L_Jp2ResetBoxes(hEngine); /*Set JPX Engine Boxes*/ if(uNumOfMPEG7) { L_Jp2SetBoxes(hEngine,L_JPXB_MPEG7,pMPEG7Box,uNumOfMPEG7); } /*Create an XML box*/ XMLBox.uStructSize = sizeof(L_JP2_XML_BOX); XMLBox.pData = pXMLData; XMLBox.uDataSize = uSize; /*Set XML box of JPX engine*/ L_Jp2SetBoxes(hEngine,L_JPXB_XML,&XMLBox,1); /*Save the image in JPx format*/ nRet = L_Jp2Save(hEngine,MAKE_IMAGE_PATH(TEXT("Test.jpx")), &TmpBitmap,LEADJP2_JPX, 24, 5,NULL, NULL, NULL); if(nRet != SUCCESS) return nRet; /*Free MPEG7 boxes*/ if(uNumOfMPEG7) L_Jp2FreeBoxes(hEngine, L_JPXB_MPEG7, pMPEG7Box, uNumOfMPEG7); /*Destroy engine handle*/ L_Jp2Destroy(hEngine); if(TmpBitmap.Flags.Allocated) L_FreeBitmap(&TmpBitmap); return SUCCESS; }