public abstract class IccTools using Leadtools;using Leadtools.ColorConversion;public IccDateTimeTagType FillDateTimeTagType(){// get the current system dataSystem.DateTime sysDateTime = System.DateTime.Now;// create a new iccDateTime classIccDateTime iccDateTime = new IccDateTime((ushort)sysDateTime.Year,(ushort)sysDateTime.Month,(ushort)sysDateTime.Day,(ushort)sysDateTime.Hour,(ushort)sysDateTime.Minute,(ushort)sysDateTime.Second);// define the tag typeIccDateTimeTagType iccDateTimeTagType = new IccDateTimeTagType(iccDateTime);return iccDateTimeTagType;}public IccXyzTagType FillIccXyzTagType(){// define the array of XYZ numbersIccXyzNumber[] data = new IccXyzNumber[1];data[0] = new IccXyzNumber(IccTools.FromDoubleTo2bFixed2bNumber(1.0),IccTools.FromDoubleTo2bFixed2bNumber(2.0),IccTools.FromDoubleTo2bFixed2bNumber(3.0));// define the tag typeIccXyzTagType xyzTagType = new IccXyzTagType(data);return xyzTagType;}public void IccProfileExtendedExample(){// define the IccProfileExtended ClassIccProfileExtended iccProfile = new IccProfileExtended();// define the IccHeader classIccHeader 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 IDheader.DeviceClass = IccProfileClassType.DeviceLinkClass;header.ColorSpace = IccColorspaceType.LabData;header.Pcs = IccColorspaceType.LabData;header.ProfileSignature = 0x61637370; // any profile signatureheader.Platform = IccPlatformSignatureType.MacintoshSignature;header.Flags = IccProfileFlags.None;header.Manufacturer = 0x46464549; // any manufacturerheader.Model = 0x0; // any modelheader.Attributes = IccProfileMediaFlags.ColorMedia;header.RenderingIntent = IccRenderingIntentType.AbsoluteColorimetric;header.Creator = 0x46464549; // any creator// set the system date/time as the date/time of the Icc ProfileSystem.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 profileiccProfile.AddTag(xyzTagType, IccTag.MediaBlackPointTag, IccTagTypeBase.XyzTypeSignature);// 2- calibrationDateTimeTagIccDateTimeTagType 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 tagsxyzTagType = (IccXyzTagType)iccProfile.DeleteTag(IccTag.MediaBlackPointTag);// to get the calibrationDateTimeTagdateTimeTagType = (IccDateTimeTagType)iccProfile.GetTag(IccTag.CalibrationDateTimeTag);// at the end, generate the profileID. For the time being, it will be filled with 0'siccProfile.GenerateProfileId();// finally generate the new Icc Profile by updating the Data Array// and then generating the fileiccProfile.UpdateDataArray();string IccfileName = Path.Combine(LEAD_VARS.ImagesDir, "IccProfileExtendedCS.icc");iccProfile.GenerateIccFile(IccfileName);}static class LEAD_VARS{public const string ImagesDir = @"C:\LEADTOOLS22\Resources\Images";}
Leadtools.ColorConversion Namespace
IccParametricCurveTagType Class
IccResponseCurveSet16TagType Class
IccViewingConditionsTagType Class
IccMultiLocalizedUnicodeTagType Class
IccLookupTableAToBTagType Class
IccLookupTableBToATagType Class
IccProfileSequenceDescriptionTagType Class
IccS15Fixed16ArrayTagType Class