public class IccProfileExtended
Public Class IccProfileExtended
public ref class IccProfileExtended
using Leadtools;
using Leadtools.ColorConversion;
public IccDateTimeTagType FillDateTimeTagType()
{
// get the current system data
System.DateTime sysDateTime = System.DateTime.Now;
// create a new iccDateTime class
IccDateTime iccDateTime = new IccDateTime((ushort)sysDateTime.Year,
(ushort)sysDateTime.Month,
(ushort)sysDateTime.Day,
(ushort)sysDateTime.Hour,
(ushort)sysDateTime.Minute,
(ushort)sysDateTime.Second);
// define the tag type
IccDateTimeTagType iccDateTimeTagType = new IccDateTimeTagType(iccDateTime);
return iccDateTimeTagType;
}
public IccXyzTagType FillIccXyzTagType()
{
// define the array of XYZ numbers
IccXyzNumber[] data = new IccXyzNumber[1];
data[0] = new IccXyzNumber(
IccTools.FromDoubleTo2bFixed2bNumber(1.0),
IccTools.FromDoubleTo2bFixed2bNumber(2.0),
IccTools.FromDoubleTo2bFixed2bNumber(3.0));
// define the tag type
IccXyzTagType xyzTagType = new IccXyzTagType(data);
return xyzTagType;
}
public void IccProfileExtendedExample()
{
// define the IccProfileExtended Class
IccProfileExtended iccProfile = new IccProfileExtended();
// define the IccHeader class
IccHeader header = IccHeader.Empty;
// filling the ICC header
// note that the Illuminant, ProfileSignature, and Version are filled
// with the default values in the IccProfile.Empty property,
// and they shouldn't be changed unless the user knows what he is doing
// the rest of the fields are the user's responsibility
// except for the ProfileID which will be filled automatically upon the call
// for the method IccProfile.GenerateProfileId, but this method must be called at the
// end when the ICC Profile is completely prepared.
// Finally, the Size field will be filled automatically by the different ICC methods,
// and it shouldn't be changed unless the user knows what he is doing.
header.CmmID = 0x6170706C; // any CMM ID
header.DeviceClass = IccProfileClassType.DeviceLinkClass;
header.ColorSpace = IccColorspaceType.LabData;
header.Pcs = IccColorspaceType.LabData;
header.ProfileSignature = 0x61637370; // any profile signature
header.Platform = IccPlatformSignatureType.MacintoshSignature;
header.Flags = IccProfileFlags.None;
header.Manufacturer = 0x46464549; // any manufacturer
header.Model = 0x0; // any model
header.Attributes = IccProfileMediaFlags.ColorMedia;
header.RenderingIntent = IccRenderingIntentType.AbsoluteColorimetric;
header.Creator = 0x46464549; // any creator
// set the system date/time as the date/time of the Icc Profile
System.DateTime sysDateTime = System.DateTime.Now;
IccDateTime iccDateTime = new IccDateTime((ushort)sysDateTime.Year,
(ushort)sysDateTime.Month,
(ushort)sysDateTime.Day,
(ushort)sysDateTime.Hour,
(ushort)sysDateTime.Minute,
(ushort)sysDateTime.Second);
header.DateTime = iccDateTime;
iccProfile.Header = header;
// create all the tags you want
// 1- mediaBlackPointTag (needs XYZ tag type)
IccXyzTagType xyzTagType = FillIccXyzTagType();
// then insert it into the profile
iccProfile.AddTag(xyzTagType, IccTag.MediaBlackPointTag, IccTagTypeBase.XyzTypeSignature);
// 2- calibrationDateTimeTag
IccDateTimeTagType dateTimeTagType = FillDateTimeTagType();
iccProfile.AddTag(dateTimeTagType, IccTag.CalibrationDateTimeTag, IccTagTypeBase.DateTimeTypeSignature);
// 3- and so on...
// to get the tag type signature of any tag in the profile,
int tagTypeSignature = iccProfile.GetTagTypeSignature(IccTag.MediaBlackPointTag);
// to delete one of the two tags
xyzTagType = (IccXyzTagType)iccProfile.DeleteTag(IccTag.MediaBlackPointTag);
// to get the calibrationDateTimeTag
dateTimeTagType = (IccDateTimeTagType)iccProfile.GetTag(IccTag.CalibrationDateTimeTag);
// at the end, generate the profileID. For the time being, it will be filled with 0's
iccProfile.GenerateProfileId();
// finally generate the new Icc Profile by updating the Data Array
// and then generating the file
iccProfile.UpdateDataArray();
string IccfileName = Path.Combine(LEAD_VARS.ImagesDir, "IccProfileExtendedCS.icc");
iccProfile.GenerateIccFile(IccfileName);
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\LEADTOOLS21\Resources\Images";
}
Imports Leadtools
Imports Leadtools.ColorConversion
Public Function FillDateTimeTagType() As IccDateTimeTagType
' get the current system data
Dim sysDateTime As DateTime = DateTime.Now
' create a new iccDateTime class
Dim iccDateTime As New IccDateTime(CUShort(sysDateTime.Year),
CUShort(sysDateTime.Month),
CUShort(sysDateTime.Day),
CUShort(sysDateTime.Hour),
CUShort(sysDateTime.Minute),
CUShort(sysDateTime.Second))
' define the tag type
Dim iccDateTimeTagType As New IccDateTimeTagType(iccDateTime)
Return iccDateTimeTagType
End Function
Public Function FillIccXyzTagType() As IccXyzTagType
' define the array of XYZ numbers
Dim data() As IccXyzNumber = {New IccXyzNumber(IccTools.FromDoubleTo2bFixed2bNumber(1.0),
IccTools.FromDoubleTo2bFixed2bNumber(2.0),
IccTools.FromDoubleTo2bFixed2bNumber(3.0))}
' define the tag type
Dim xyzTagType As New IccXyzTagType(data)
Return xyzTagType
End Function
Public Sub IccProfileExtendedExample()
' define the IccProfileExtended Class
Dim iccProfile As New IccProfileExtended()
' define the IccHeader class
Dim header As IccHeader = IccHeader.Empty
' filling the ICC header
' note that the Illuminant, ProfileSignature, and Version are filled
' with the default values in the IccProfile.Empty property,
' and they shouldnt be changed unless the user knows what he is doing
' the rest of the fields are the user's responsibility
' except for the ProfileID which will be filled automatically upon the call
' for the method IccProfile.GenerateProfileId, but this method must be called at the
' end when the ICC Profile is completely prepared.
' Finally, the Size field will be filled automatically by the different ICC methods,
' and it shouldnt be changed unless the user knows what he is doing.
header.CmmID = &H6170706C
header.DeviceClass = IccProfileClassType.DeviceLinkClass
header.ColorSpace = IccColorspaceType.LabData
header.Pcs = IccColorspaceType.LabData
header.ProfileSignature = &H61637370
header.Platform = IccPlatformSignatureType.MacintoshSignature
header.Flags = IccProfileFlags.None
header.Manufacturer = &H46464549
header.Model = 0
header.Attributes = IccProfileMediaFlags.ColorMedia
header.RenderingIntent = IccRenderingIntentType.AbsoluteColorimetric
header.Creator = &H46464549
' set the system date/time as the date/time of the Icc Profile
Dim sysDateTime As System.DateTime = System.DateTime.Now
Dim iccDateTime As New IccDateTime(CUShort(sysDateTime.Year),
CUShort(sysDateTime.Month),
CUShort(sysDateTime.Day),
CUShort(sysDateTime.Hour),
CUShort(sysDateTime.Minute),
CUShort(sysDateTime.Second))
header.DateTime = iccDateTime
iccProfile.Header = header
' create all the tags you want
' 1- mediaBlackPointTag (needs XYZ tag type)
Dim xyzTagType As IccXyzTagType = FillIccXyzTagType()
' then insert it into the profile
iccProfile.AddTag(xyzTagType, IccTag.MediaBlackPointTag, IccTagTypeBase.XyzTypeSignature)
' 2- calibrationDateTimeTag
Dim dateTimeTagType As IccDateTimeTagType = FillDateTimeTagType()
iccProfile.AddTag(dateTimeTagType, IccTag.CalibrationDateTimeTag, IccTagTypeBase.DateTimeTypeSignature)
' 3- and so on...
' to get the tag type signature of any tag in the profile,
Dim tagTypeSignature As Integer = iccProfile.GetTagTypeSignature(IccTag.MediaBlackPointTag)
' to delete one of the two tags
xyzTagType = CType(iccProfile.DeleteTag(IccTag.MediaBlackPointTag), IccXyzTagType)
' to get the calibrationDateTimeTag
dateTimeTagType = CType(iccProfile.GetTag(IccTag.CalibrationDateTimeTag), IccDateTimeTagType)
' at the end, generate the profileID. For the time being, it will be filled with 0's
iccProfile.GenerateProfileId()
' finally generate the new Icc Profile by generating the Data Array
' and then generating the file
iccProfile.UpdateDataArray()
iccProfile.GenerateIccFile(Path.Combine(LEAD_VARS.ImagesDir, "IccProfileExtendedVB.icc"))
End Sub
Public NotInheritable Class LEAD_VARS
Public Const ImagesDir As String = "C:\LEADTOOLS21\Resources\Images"
End Class
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