public int GcrLevel { get; set; }
The GCR value. Possible values are between 0 and 1000.
using Leadtools;using Leadtools.Codecs;using Leadtools.ColorConversion;public byte[] GetCmykBufferFromImage(RasterImage bgrImage){// StartUp the ColorConversion.RasterColorConverterEngine.Startup();// Image buffer arraybyte[] bgrBuffer = new byte[bgrImage.BytesPerLine * bgrImage.Height];bgrImage.Access();// get image bufferfor (int i = 0; i < bgrImage.Height; i++)bgrImage.GetRow(i, bgrBuffer, i * bgrImage.BytesPerLine, bgrImage.BytesPerLine);bgrImage.Release();// Initialize a new Converter objectRasterColorConverterEngine converter = new RasterColorConverterEngine();byte[] cmykBuffer = new byte[bgrImage.Height * bgrImage.Width * 4];try{// Start the color conversionconverter.Start(ConversionColorFormat.Bgr, ConversionColorFormat.Cmyk, null);// convert the image bufferconverter.Convert(bgrBuffer, // input buffer0, // offset from the beginning of the source buffercmykBuffer, // output buffer0, // offset from the beginning of the destination bufferbgrImage.Width, // pixels widthbgrImage.Height, // pixels heightbgrImage.BytesPerLine - (bgrImage.Width * (bgrImage.BitsPerPixel / 8)),0); // 0 bytes align// stop the conversionconverter.Stop();}catch (Exception ex){Debug.WriteLine(ex.Message);}RasterColorConverterEngine.Shutdown();return cmykBuffer;}public RasterImage GetImageFromCmykBuffer(byte[] cmykBuffer, int width, int height){// StartUp the ColorConversion.RasterColorConverterEngine.Startup();// Initialize a new Converter objectRasterColorConverterEngine converter = new RasterColorConverterEngine();// Initialize an image to hold the converted buffer.RasterImage cmykImage = null;try{cmykImage = new RasterImage(RasterMemoryFlags.Conventional, width, height, 24, RasterByteOrder.Bgr, RasterViewPerspective.TopLeft, null, IntPtr.Zero, 0);// Start the color conversionconverter.Start(ConversionColorFormat.Cmyk, ConversionColorFormat.Bgr, null);// convert the image bufferconverter.ConvertToImage(cmykBuffer, // converted buffer0, // offset from the beginning of the source buffercmykImage, // image to be savewidth, // pixels widthheight, // pixels height0, // 0 bytes aligncmykImage.BytesPerLine - (cmykImage.Width * (cmykImage.BitsPerPixel / 8)));// stop the conversionconverter.Stop();}catch (Exception ex){Debug.WriteLine(ex.Message);}// Shutdown the ColorConversion.RasterColorConverterEngine.Shutdown();return cmykImage;}public void SetParametersExample(){// Initialize the RasterCodecsRasterCodecs codecs = new RasterCodecs();// StartUp the ColorConversion.RasterColorConverterEngine.Startup();// The input file namestring inputFileName = Path.Combine(LEAD_VARS.ImagesDir, "image1.cmp");// load the input image as Bgr.RasterImage bgrImage = codecs.Load(inputFileName, 24, CodecsLoadByteOrder.Bgr, 1, 1);int width = bgrImage.Width;int height = bgrImage.Height;byte[] cmykBuffer = GetCmykBufferFromImage(bgrImage);// Initialize the Rgb buffer arraybyte[] rgbBuffer = new byte[cmykBuffer.Length - cmykBuffer.Length / 4];// Initialize a new Converter objectRasterColorConverterEngine converter = new RasterColorConverterEngine();// Initialize a new ConversionParameters class object.ConversionParameters convParams = new ConversionParameters();// we want to use the built in LEAD ICC conversion method and built in conversionconvParams.Method = ConversionMethodFlags.UseBuiltIn | ConversionMethodFlags.UseIcc;// set the active conversion methodconvParams.ActiveMethod = ConversionMethodFlags.UseBuiltIn;// Initialize WhitePoint property class.convParams.WhitePoint = new ConversionWhitePoint();// Set WhitePoint property.ConversionWhitePoint whitePoint = new ConversionWhitePoint();whitePoint.WhitePoint = ConversionWhitePointType.D50;convParams.WhitePoint = whitePoint;// Initialize CmykParameters property class.convParams.CmykParameters = new ConversionCmykParameters();// Set GcrLevel property.ConversionCmykParameters cmykParameters = new ConversionCmykParameters();cmykParameters.GcrLevel = 150;convParams.CmykParameters = cmykParameters;try{// Initialize the ColorConversionconverter.Start(ConversionColorFormat.Cmyk, ConversionColorFormat.Rgb, convParams);// convert the Cmyk buffer to Rgb buffer using Built-in conversion.converter.Convert(cmykBuffer,0,rgbBuffer,0,width,height,0,bgrImage.BytesPerLine - (bgrImage.Width * (bgrImage.BitsPerPixel / 8)));// Change the active method for conversionconvParams.Method = ConversionMethodFlags.ChangeActiveMethod | ConversionMethodFlags.ChangeCmyk;// Switch to ICC conversion methodconvParams.ActiveMethod = ConversionMethodFlags.UseIcc;// Set Mask property.cmykParameters.Mask = ConversionCmykMask.Gcr;// Set GcrLevel property.cmykParameters.GcrLevel = 175;convParams.CmykParameters = cmykParameters;// Update the conversion parametersconverter.SetParameters(convParams);// convert the image bufferconverter.Convert(cmykBuffer, 0, rgbBuffer, 0, width, height, 0, 0);// Stop the ColorConversionconverter.Stop();}catch (Exception ex){Debug.WriteLine(ex.Message);rgbBuffer = null;}// the output File Name.string outputFileName = Path.Combine(LEAD_VARS.ImagesDir, "ResultImage.bmp");// Save the converted ImageRasterImage cmykImage = GetImageFromCmykBuffer(cmykBuffer, width, height);codecs.Save(cmykImage, outputFileName, RasterImageFormat.Bmp, 24);// Shutdown the ColorConversion.RasterColorConverterEngine.Shutdown();// Shutdown the RasterColor}static class LEAD_VARS{public const string ImagesDir = @"C:\LEADTOOLS22\Resources\Images";}