public ConversionMethodFlags Method { get; set; }
This property works in one of two ways:
using Leadtools;using Leadtools.Codecs;using Leadtools.ColorConversion;using Leadtools.ImageProcessing;public string outputFile = Path.Combine(LEAD_VARS.ImagesDir, "ColorConversion", "WhitePoint.tif");public void WhitePointPropertyExample(){// StartUp the ColorConversion.RasterColorConverterEngine.Startup();// Input file namestring inputFileName = Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp");// Load the input image as Rgbusing (RasterCodecs codecs = new RasterCodecs())using (RasterImage rgbImage = codecs.Load(inputFileName, 24, CodecsLoadByteOrder.Rgb, 1, 1)){// Get image bufferbyte[] rgbBuffer = new byte[rgbImage.BytesPerLine * rgbImage.Height];rgbImage.Access();for (int i = 0; i < rgbImage.Height; i++)rgbImage.GetRow(i, rgbBuffer, i * rgbImage.BytesPerLine, rgbImage.BytesPerLine);rgbImage.Release();// Initialize the Cmyk buffer arraybyte[] cmykBuffer = new byte[rgbImage.Height * rgbImage.Width * 4];using (RasterColorConverterEngine colorConverterEngine = new RasterColorConverterEngine()){// Conversion parametersConversionParameters convParams = new ConversionParameters();convParams.Method = ConversionMethodFlags.UseBuiltIn;convParams.ActiveMethod = ConversionMethodFlags.UseBuiltIn;convParams.Quantization = 8;// WhitePointConversionWhitePoint whitePoint = ConversionWhitePoint.Empty;whitePoint.WhitePoint = ConversionWhitePointType.D50;whitePoint.XWhite = 0;whitePoint.YWhite = 0;convParams.WhitePoint = whitePoint;// CMYKConversionCmykParameters cmykParameters = new ConversionCmykParameters();cmykParameters.GcrLevel = 150;convParams.CmykParameters = cmykParameters;// Convert RGB to CMYK with above parameterscolorConverterEngine.Start(ConversionColorFormat.Rgb, ConversionColorFormat.Cmyk, convParams);colorConverterEngine.Convert(rgbBuffer, // Source buffer0, // Offset to the beginning of source buffercmykBuffer, // Destination buffer0, // Offset to the beginning of destination bufferrgbImage.Width, // Pixels widthrgbImage.Height, // Pixels heightrgbImage.BytesPerLine - (rgbImage.Width * (rgbImage.BitsPerPixel / 8)), // Scanline alignment for source buffer0); // Scanline alignment for destination buffercolorConverterEngine.Stop();// Save CMYK Image// Split CMYK buffer to separate C, M, Y, and K planesbyte[] cBuffer = new byte[cmykBuffer.Length / 4];byte[] mBuffer = new byte[cmykBuffer.Length / 4];byte[] yBuffer = new byte[cmykBuffer.Length / 4];byte[] kBuffer = new byte[cmykBuffer.Length / 4];int index, cIndex, mIndex, yIndex, kIndex;index = cIndex = mIndex = yIndex = kIndex = 0;foreach (byte cmykByte in cmykBuffer){switch (++index % 4){case 0:kBuffer[kIndex++] = cmykByte;break;case 1:cBuffer[cIndex++] = cmykByte;break;case 2:mBuffer[mIndex++] = cmykByte;break;case 3:yBuffer[yIndex++] = cmykByte;break;}}// Combine planes into a single RasterImage with a page for each planeusing (RasterImage cPlane = new RasterImage(RasterMemoryFlags.Conventional, rgbImage.Width, rgbImage.Height, 0, RasterByteOrder.Gray, RasterViewPerspective.TopLeft, null, cBuffer, cBuffer.Length))using (RasterImage mPlane = new RasterImage(RasterMemoryFlags.Conventional, rgbImage.Width, rgbImage.Height, 0, RasterByteOrder.Gray, RasterViewPerspective.TopLeft, null, mBuffer, mBuffer.Length))using (RasterImage yPlane = new RasterImage(RasterMemoryFlags.Conventional, rgbImage.Width, rgbImage.Height, 0, RasterByteOrder.Gray, RasterViewPerspective.TopLeft, null, yBuffer, yBuffer.Length))using (RasterImage kPlane = new RasterImage(RasterMemoryFlags.Conventional, rgbImage.Width, rgbImage.Height, 0, RasterByteOrder.Gray, RasterViewPerspective.TopLeft, null, kBuffer, yBuffer.Length)){cPlane.AddPage(mPlane);cPlane.AddPage(yPlane);cPlane.AddPage(kPlane);// Save the 4 page CMYK plances Raster Image as a CMYK Imagecodecs.SaveCmykPlanes(cPlane, outputFile, RasterImageFormat.TifCmyk, 0, 0, CodecsSavePageMode.Overwrite);}}}// Shutdown the ColorConversion.RasterColorConverterEngine.Shutdown();}static class LEAD_VARS{public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images";}