Contains the lut16Type tag type data.
public class IccLookupTable16TagType : IccTagTypeBase
Public Class IccLookupTable16TagType
Inherits IccTagTypeBase
public ref class IccLookupTable16TagType : public IccTagTypeBase
This example method can be used in creating an "lut16Type" mentioned in the ICC.1:2004-10 specification, the following information is used: input channels = 3, output channels = 3, Matrix: {1, 0, 0}, {0, 1, 0}, {0, 0, 1}, CLUT points = 8, Input Entries = 2, Output Entries = 2.
using Leadtools;
using Leadtools.ColorConversion;
public void IccLookupTable16TagTypeExample()
{
// load an Icc Profile
string IccfileName = Path.Combine(LEAD_VARS.ImagesDir, "EmptyIcc.icc");
IccProfileExtended iccProfile = new IccProfileExtended(IccfileName);
// these arrays should be filled with the appropriate data
// input table will be (InputChannels(3) * InputEntries(2)) shorts
// output table will be (OutputChannels(3) * OutputEntries(2)) shorts
// clut table will be ((CLUTPoints(8) ^ InputChannels(3)) * OutputChannels(3)) shorts
ushort[] inputTables = new ushort[6];
ushort[] colorLUTTables = new ushort[1536];
ushort[] outputTables = new ushort[6];
// fill the tables
inputTables[0] = 0;
inputTables[1] = 65535;
inputTables[2] = 0;
inputTables[3] = 65535;
inputTables[4] = 0;
inputTables[5] = 65535;
outputTables[0] = 0;
outputTables[1] = 65535;
outputTables[2] = 0;
outputTables[3] = 65535;
outputTables[4] = 0;
outputTables[5] = 65535;
int nI = 0;
for (int rI = 0; rI < 256; rI += 32)
{
for (int gI = 0; gI < 256; gI += 32)
{
for (int bI = 0; bI < 256; bI += 32)
{
colorLUTTables[nI++] = (ushort)Math.Min(Math.Max(0, rI * 256), 65535);
colorLUTTables[nI++] = (ushort)Math.Min(Math.Max(0, gI * 256), 65535);
colorLUTTables[nI++] = (ushort)Math.Min(Math.Max(0, bI * 256), 65535);
}
}
}
// create new IccLookupTable16 class
IccLookupTable16 iccLUT16 = new IccLookupTable16(3, 3, 8,
IccTools.FromDoubleTo2bFixed2bNumber(1.0),
IccTools.FromDoubleTo2bFixed2bNumber(0.0),
IccTools.FromDoubleTo2bFixed2bNumber(0.0),
IccTools.FromDoubleTo2bFixed2bNumber(0.0),
IccTools.FromDoubleTo2bFixed2bNumber(1.0),
IccTools.FromDoubleTo2bFixed2bNumber(0.0),
IccTools.FromDoubleTo2bFixed2bNumber(0.0),
IccTools.FromDoubleTo2bFixed2bNumber(0.0),
IccTools.FromDoubleTo2bFixed2bNumber(1.0),
inputTables,
colorLUTTables,
outputTables);
// define the tag type
IccLookupTable16TagType iccLUT16TagType = new IccLookupTable16TagType(iccLUT16);
// add the new tag to the ICC Profile
iccProfile.AddTag(iccLUT16TagType, IccTag.BToA0Tag, IccTagTypeBase.Lut16TypeSignature);
// generate the new profile id
iccProfile.GenerateProfileId();
// update the icc array with the new changes
iccProfile.UpdateDataArray();
// write the Icc Profile into a new file
string fileName = Path.Combine(LEAD_VARS.ImagesDir, "IccLookupTable16TagTypeCS.icc");
iccProfile.GenerateIccFile(fileName);
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";
}
Imports Leadtools
Imports Leadtools.ColorConversion
Public Sub IccLookupTable16TagTypeExample()
' load an Icc Profile
Dim iccProfile As New IccProfileExtended(Path.Combine(LEAD_VARS.ImagesDir, "EmptyIcc.icc"))
' these arrays should be filled with the appropriate data
' input table will be (InputChannels(3) * InputEntries(2)) shorts
' output table will be (OutputChannels(3) * OutputEntries(2)) shorts
' clut table will be ((CLUTPoints(8) ^ InputChannels(3)) * OutputChannels(3)) shorts
Dim inputTables(5) As UShort
Dim colorLUTTables(1535) As UShort
Dim outputTables(5) As UShort
' fill the tables
inputTables(0) = 0
inputTables(1) = 65535
inputTables(2) = 0
inputTables(3) = 65535
inputTables(4) = 0
inputTables(5) = 65535
outputTables(0) = 0
outputTables(1) = 65535
outputTables(2) = 0
outputTables(3) = 65535
outputTables(4) = 0
outputTables(5) = 65535
Dim nI As Integer = 0
Dim rI As Integer = 0
Dim gI As Integer = 0
Dim bI As Integer = 0
For rI = 0 To 255 Step +32
For gI = 0 To 255 Step +32
For bI = 0 To 255 Step +32
colorLUTTables(nI) = CUShort(Math.Min(Math.Max(0, rI * 256), 65535))
nI = nI + 1
colorLUTTables(nI) = CUShort(Math.Min(Math.Max(0, gI * 256), 65535))
nI = nI + 1
colorLUTTables(nI) = CUShort(Math.Min(Math.Max(0, bI * 256), 65535))
nI = nI + 1
Next bI
Next gI
Next rI
' create new IccLookupTable16 class
Dim iccCLUT16 As New IccLookupTable16(3, 3, 8,
IccTools.FromDoubleTo2bFixed2bNumber(1.0),
IccTools.FromDoubleTo2bFixed2bNumber(0.0),
IccTools.FromDoubleTo2bFixed2bNumber(0.0),
IccTools.FromDoubleTo2bFixed2bNumber(0.0),
IccTools.FromDoubleTo2bFixed2bNumber(1.0),
IccTools.FromDoubleTo2bFixed2bNumber(0.0),
IccTools.FromDoubleTo2bFixed2bNumber(0.0),
IccTools.FromDoubleTo2bFixed2bNumber(0.0),
IccTools.FromDoubleTo2bFixed2bNumber(1.0),
inputTables,
colorLUTTables,
outputTables)
' define the tag type
Dim iccCLUT16TagType As New IccLookupTable16TagType(iccCLUT16)
' add the new tag to the ICC Profile
iccProfile.AddTag(iccCLUT16TagType, IccTag.BToA0Tag, IccTagTypeBase.Lut16TypeSignature)
' generate the new profile id
iccProfile.GenerateProfileId()
' update the icc array with the new changes
iccProfile.UpdateDataArray()
' write the Icc Profile into a new file
iccProfile.GenerateIccFile(Path.Combine(LEAD_VARS.ImagesDir, "IccLookupTable16TagTypeVB.icc"))
End Sub
Public NotInheritable Class LEAD_VARS
Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images"
End Class
IccLookupTable16TagType Members
Leadtools.ColorConversion Namespace
IccParametricCurveTagType Class
IccResponseCurveSet16TagType Class
IccViewingConditionsTagType Class
IccMultiLocalizedUnicodeTagType Class
IccLookupTableAToBTagType Class
IccLookupTableBToATagType Class
IccProfileSequenceDescriptionTagType Class
IccS15Fixed16ArrayTagType Class
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document