Converts image data in a buffer from one color conversion model to RGB\BGR directly using built in algorithms, and sets the converted data in a LBitmapBase class object.
#include "ltwrappr.h"
static L_INT LColor::ConvertDirectToBitmap(nSrcFormat, nDstFormat, pSrcBuf, pBitmap, uStructSize, nWidth, nHeight, nInAlign, nOutAlign)
Format of the source data. Possible values are:
Value | Meaning |
---|---|
CCS_RGB | [0x00] Color conversion is RGB. |
CCS_YUV | [0x01] Color conversion is YUV. |
CCS_CMYK | [0x02] Color conversion is CMYK. |
CCS_HSV | [0x03] Color conversion is HSV. |
CCS_HLS | [0x04] Color conversion is HLS. |
CCS_YIQ | [0x05] Color conversion is YIQ. |
CCS_CMY | [0x06] Color conversion is CMY. |
CCS_LAB | [0x07] Color conversion is CIELAB. |
CCS_XYZ | [0x08] Color conversion is CIEXYZ. |
CCS_YCCK | [0x0B] Color conversion is YCCK. |
CCS_BGR | [0x0C] Color conversion is BGR. |
CCS_UYVY | [0x0E] Color conversion is UYVY. |
CCS_YUY2 | [0x09] Color conversion is YUY2. |
CCS_YVU9 | [0x0A] Color conversion is YVU9. |
CCS_YCC | [0x0F] Color conversion is YCC. |
CCS_IHS | [0x80] Color conversion is IHS. |
CCS_Y41P | [0x0D] Color conversion is Y41P. |
CCS_ARGB4 | [0x90] Color conversion is ARGB4. |
Format of the output data. Possible values are:
Value | Meaning |
---|---|
CCS_RGB | [0x00] Color conversion is RGB. |
CCS_BGR | [0x0C] Color conversion is BGR. |
Pointer to the buffer that references the input data.
Pointer to LBitmapBase class object that references the converted data.
Size in bytes, of the structure pointed to by pBitmap, for versioning. Use sizeof(BITMAPHANDLE).
Width of pixels to be processed.
Height of pixels to be processed.
Each scanline in the input buffer is a multiple of nInAlign bytes.
Each scanline in the output buffer is a multiple of nOutAlign bytes.
Value | Meaning |
---|---|
SUCCESS | The function was successful. |
< 1 | An error occurred. Refer to Return Codes. |
This function works only for conversion to BGR or RGB color space formats.
L_INT LColor_ConvertDirectToBitmapExample()
{
L_INT nRet;
LColor lClr;
LBitmapBase LeadBitmap; /* Bitmap handle to hold the loaded image. */
LBitmapBase OutBitmap;
/* Load the bitmap, keeping the bits per pixel of the file */
nRet = LeadBitmap.Load(MAKE_IMAGE_PATH(TEXT("IMAGE1.CMP")), 0, ORDER_BGR);
if(nRet !=SUCCESS)
return nRet;
LBuffer Input(sizeof(L_UCHAR) * (LeadBitmap.GetMemSize()));
LeadBitmap.GetRowCol(&Input, 0, 0);
L_UCHAR* pInput = (L_UCHAR*)(Input.Lock()); /*input buffer*/
L_INT nWidth = LeadBitmap.GetWidth(); /*pixels width*/
L_INT nHeight = LeadBitmap.GetHeight(); /*pixels height*/
/* direct conversion using built in options */
nRet = lClr.ConvertDirectToBitmap(CCS_CMYK, CCS_RGB, pInput, &OutBitmap, sizeof(BITMAPHANDLE), nWidth, nHeight, 0, 0);
if(nRet !=SUCCESS)
return nRet;
nRet = OutBitmap.Save (MAKE_IMAGE_PATH(TEXT("Result.BMP")), FILE_BMP, 24, 0, NULL);
if(nRet !=SUCCESS)
return nRet;
//free bitmap
if(LeadBitmap.IsAllocated())
LeadBitmap.Free();
if(OutBitmap.IsAllocated())
OutBitmap.Free();
return SUCCESS;
}