Compresses the input raw data using the ABIC encoder.
#include "ltfil.h"
L_LTFIL_API L_INT L_EncodeABIC(pInputData, nAlign, nWidth, nHeight, ppOutputData, pnLength, bBiLevel)
Pointer to a buffer that contains the uncompressed raw data.
Number of bytes used to align the uncompressed raw data pointed to by pInputData
.
Width of the uncompressed raw data image, in pixels.
Height of the uncompressed raw data image, in pixels.
Pointer to a pointer to an output data buffer to be updated with the resulting compressed ABIC data.
Pointer to a variable to be updated with the length of the resulting compressed data pointed to by ppOutputData
.
Flag that indicates whether to encode the uncompressed input data pointed to by pInputData
as bi-level or grayscale. Possible values are:
Value | Meaning |
---|---|
TRUE | Encodes the input buffer as 1-bit Bi-level. |
FALSE | Encodes the input buffer as 4-bit Grayscale. |
Value | Meaning |
---|---|
SUCCESS | The function was successful. |
< 1 | An error occurred. Refer to Return Codes. |
This function compresses the input raw data to 1-bit bi-level or 4-bit grayscale ABIC data.
The output buffer pointed by ppOutputData
is allocated automatically by the function. The user is responsible to free this ppOutputData buffer by calling GlobalFreePtr() function.
Win32, x64.
L_INT EncodeABICExample( HWND hWnd, pBITMAPHANDLE pBitmap)
{
HGLOBAL hGlobal=NULL;
L_UCHAR *pData=NULL;
L_SIZE_T uLength=0;
L_UCHAR *pOutData=NULL;
L_SSIZE_T nOutLength=0;
L_INT nRet;
L_HANDLE pFile;
DWORD wWrittenBytes;
nRet = 0;
if( pBitmap->Flags.Allocated )
{
nOutLength = 0;
pOutData = NULL;
nRet = L_SaveBitmapMemory( &hGlobal, pBitmap, FILE_RAW, pBitmap->BitsPerPixel, 0, &uLength, NULL );
if( SUCCESS == nRet )
{
pData = (L_UCHAR *)GlobalLock( hGlobal );
nRet = L_EncodeABIC( pData, 4, pBitmap->Width, pBitmap->Height, &pOutData, &nOutLength, FALSE );
if( SUCCESS == nRet )
{
pFile = CreateFile(MAKE_IMAGE_PATH("output.ica"), GENERIC_ALL, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
if( pFile )
{
if( !WriteFile(pFile, pOutData,(DWORD)(sizeof( L_UCHAR ) * nOutLength), &wWrittenBytes, NULL) )
{
nRet = -1; /* failed to write data */
}
CloseHandle( pFile );
}
else
{
nRet = -1; /* failed to open file */
}
GlobalFreePtr( pOutData );
}
else
{
return nRet; /* failed to encode data */
}
GlobalUnlock( hGlobal );
GlobalFree( hGlobal );
}
else
{
MessageBox( hWnd, TEXT("Do decode first please!"), TEXT("Information!"), MB_OK | MB_ICONINFORMATION);
return nRet;
}
}
else
return FAILURE;
return nRet ;
}
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document