Conversion Given an ICM Profile

1.

Define the following global variables:

LColor clr;
CONVERSION_PARAMS params;
BYTE RGBColor[3];
BYTE ColorSpace[4];

2.

Set the conversion options by filling a CONVERSION_PARAMS structure:

memset(&params, 0, sizeof(CONVERSION_PARAMS));

params.uStructSize = sizeof(CONVERSION_PARAMS);
params.nMethod = USE_CUSTOM_ICC;
params.nActiveMethod = USE_CUSTOM_ICC;
params.pWpoint = (LPWHITEPOINT)malloc(sizeof(WHITEPOINT));
params.pWpoint->nWhitePoint = CIELAB_D50;

params.pMemInputProfile = NULL;
params.pMemOutputProfile = NULL;

lstrcpy(params.sInputProfile, TEXT("C:\\MyCMYKProfile.ICM"));
lstrcpy(params.sOutputProfile, TEXT("C:\\MyRGBProfile.ICM"));

3.

Initialize the color conversion object with LColor::Initialize ():

clr.Initialize (CCS_CMYK, CCS_RGB, &params);

4.

Now, do the conversion:

ColorSpace[0] = 100;
ColorSpace[1] = 100;
ColorSpace[2] = 100;
ColorSpace[3] = 100;

clr.Convert (ColorSpace, RGBColor, 1, 1, 0, 0);

5.

At the end, free the color conversion object:

clr.Free ();

See Also:

Introduction

Programming with Color Conversion

Raster Image Functions: Color Conversion

Color Conversion Tutorials