The LEAD Color Conversion toolkit provides emulation tables as one of its conversion methods. This method however is provided only for the following conversions:
CMYK to RGB. CIELab to RGB. RGB to CIELab.
The Emulation tables' method supports both built-in and custom options. For built-in emulation tables, use the ConversionMethodFlags.UseEmulationTables option. The custom emulation tables' option, ConversionMethodFlags.UseCustomEmulationTables, provides custom conversion using user-supplied images, converted from the source images distributed with the library, by any tool, as follows:
Conversion | Source | Convert to |
CMYK to RGB | src_cmyk_image.tif | RGB image (i.e. dst_cmyk2rgb_image.tif) |
RGB to Lab | src_rgb_image.tif | Lab image (i.e. dst_rgb2lab_image.tif) |
Lab to RGB | src_lab_image.tif | RGB image (i.e. dst_lab2rgb_image.tif) |
A set of images, already converted and ready for use (dst_cmyk2rgb_image.tif, dst_rgb2lab_image.tif, and dst_lab2rgb_image.tif), is provided. However, using the provided set of converted images will produce the same results as the built-in emulation tables.
The code below shows how a conversion can be done using the built-in tables:
[Visual Basic]
Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.ColorConversion
Private Function BuiltInTablesConvertCmykToRgb(ByVal cmykBuffer As Byte(), ByVal width As Integer, ByVal height As Integer) As Byte()
' StartUp the ColorConversion.
RasterColorConverter.Startup()
' Initialize the Rgb buffer array
Dim rgbBuffer As Byte() = New Byte(cmykBuffer.Length - 1){}
' Initialize a new ConversionParameters class object.
Dim convParams As ConversionParameters = New ConversionParameters()
' Conversion with options.
' The conversion will be done with the options specified in the
' convParams variable
' We want to use built-in emulation tables
convParams.Method = ConversionMethodFlags.UseEmulationTables
' Set the quantization to 8
convParams.Quantization = 8
' set the active conversion method
convParams.ActiveMethod = ConversionMethodFlags.UseEmulationTables
' Initialize a new Converter object
Dim converter As RasterColorConverter = New RasterColorConverter()
Try
' Initialize the color conversion
converter.Start(ConversionColorFormat.Cmyk, ConversionColorFormat.Rgb, convParams)
' Convert the image buffer
converter.Convert(cmykBuffer, 0, rgbBuffer, 0, width, height, 0, 0)
' Stop the conversion
converter.Stop()
Catch ex As Exception
MessageBox.Show(ex.Message)
rgbBuffer = Nothing
End Try
' Shutdown the ColorConversion.
RasterColorConverter.Shutdown()
' return the converted buffer.
Return rgbBuffer
End Function
[C#]
using Leadtools;
using Leadtools.Codecs;
using Leadtools.ColorConversion;
private byte[] BuiltInTablesConvertCmykToRgb(byte[] cmykBuffer, int width, int height)
{
// StartUp the ColorConversion.
RasterColorConverter.Startup();
// Initialize the Rgb buffer array
byte[] rgbBuffer = new byte[cmykBuffer.Length];
// Initialize a new ConversionParameters class object.
ConversionParameters convParams = new ConversionParameters();
// Conversion with options.
// The conversion will be done with the options specified in the
// convParams variable
// We want to use built-in emulation tables
convParams.Method = ConversionMethodFlags.UseEmulationTables;
// set the active conversion method
convParams.ActiveMethod = ConversionMethodFlags.UseEmulationTables;
// set the quantization to 8
convParams.Quantization = 8;
// Initialize a new Converter object
RasterColorConverter converter = new RasterColorConverter();
try
{
// Initialize the color conversion
converter.Start(ConversionColorFormat.Cmyk,
ConversionColorFormat.Rgb,
convParams);
// Convert the image buffer
converter.Convert(cmykBuffer, 0, rgbBuffer, 0, width, height, 0, 0);
// Stop the conversion
converter.Stop();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
rgbBuffer = null;
}
// Shutdown the ColorConversion.
RasterColorConverter.Shutdown();
// return the converted buffer.
return rgbBuffer;
}
The code below shows how a conversion can be done using user-defined tables:
[Visual Basic]
Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.ColorConversion
Private Function UserTablesConvertCmykToRgb(ByVal cmykBuffer As Byte(), ByVal width As Integer, ByVal height As Integer) As Byte()
' StartUp the ColorConversion.
RasterColorConverter.Startup()
' Initialize the Rgb buffer array
Dim rgbBuffer As Byte() = New Byte(cmykBuffer.Length - 1){}
' Initialize a new ConversionParameters class object.
Dim convParams As ConversionParameters = New ConversionParameters()
' Conversion with options.
' The conversion will be done with the options specified in the
' params(variable)
' we want to use custom emulation tables
convParams.Method = ConversionMethodFlags.UseCustomEmulationTables
' set the active conversion method
convParams.ActiveMethod = ConversionMethodFlags.UseCustomEmulationTables
' set the emulation tables
convParams.DestinationInputTable = "C:\Program Files\LEAD Technologies\LEADTOOLS 15\Images\ET\src_rgb_image.tif"
' Initialize a new Converter object
Dim converter As RasterColorConverter = New RasterColorConverter()
Try
' Initialize the color conversion
converter.Start(ConversionColorFormat.Cmyk, ConversionColorFormat.Rgb, convParams)
' Convert the image buffer
converter.Convert(cmykBuffer, 0, rgbBuffer, 0, width, height, 0, 0)
' Stop the conversion
converter.Stop()
Catch ex As Exception
MessageBox.Show(ex.Message)
rgbBuffer = Nothing
End Try
' Shutdown the ColorConversion.
RasterColorConverter.Shutdown()
' return the converted buffer.
Return rgbBuffer
End Function
[C#]
using Leadtools;
using Leadtools.Codecs;
using Leadtools.ColorConversion;
private byte[] UserTablesConvertCmykToRgb(byte[] cmykBuffer, int width, int height)
{
// StartUp the ColorConversion.
RasterColorConverter.Startup();
// Initialize the Rgb buffer array
byte[] rgbBuffer = new byte[cmykBuffer.Length];
// Initialize a new ConversionParameters class object.
ConversionParameters convParams = new ConversionParameters();
// Conversion with options.
// The conversion will be done with the options specified in the
// params(variable)
// we want to use custom emulation tables
convParams.Method = ConversionMethodFlags.UseCustomEmulationTables;
// set the active conversion method
convParams.ActiveMethod = ConversionMethodFlags.UseCustomEmulationTables;
// set the emulation tables
convParams.DestinationInputTable = @"C:\Program Files\LEAD Technologies\LEADTOOLS 15\Images\ET\src_rgb_image.tif";
// Initialize a new Converter object
RasterColorConverter converter = new RasterColorConverter();
try
{
// Initialize the color conversion
converter.Start(ConversionColorFormat.Cmyk,
ConversionColorFormat.Rgb,
convParams);
// Convert the image buffer
converter.Convert(cmykBuffer, 0, rgbBuffer, 0, width, height, 0, 0);
// Stop the conversion
converter.Stop();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
rgbBuffer = null;
}
// Shutdown the ColorConversion.
RasterColorConverter.Shutdown();
// return the converted buffer.
return rgbBuffer;
}