public static IccTagTypeBase CreateTagType(IccTagTypeBase sourceTagData,int tagTypeSignature)
sourceTagData
Icc class object that contains the tag data.
tagTypeSignature
Tag type signature of the tag type that needs to be created.
Icc class object that contains the resulted tag.
using Leadtools;using Leadtools.ColorConversion;public IccMultiLocalizedUnicodeTagType FillIccMultiLocalizedUnicodeTagType(){ushort nameLanguageCode = 'e';nameLanguageCode <<= 8;nameLanguageCode |= 0x00FF;nameLanguageCode &= 0xFF00 | 'n';ushort nameCountryCode = 'c';nameCountryCode <<= 8;nameCountryCode |= 0x00FF;nameCountryCode &= 0xFF00 | 'a';string[] names = new string[2];names[0] = "first name record";names[1] = "second name record";IccNameRecord[] nameRecord = new IccNameRecord[2];nameRecord[0] = new IccNameRecord(nameLanguageCode, nameCountryCode, names[0].Length * 2, 16 + (2 * 12));nameRecord[1] = new IccNameRecord(nameLanguageCode, nameCountryCode, names[1].Length * 2, ((16 + (2 * 12)) + (names[0].Length * 2)));char[] firstName = new char[names[0].Length];firstName = names[0].ToCharArray();char[] secondName = new char[names[1].Length];secondName = names[1].ToCharArray();ushort[] unicodeChars = new ushort[names[0].Length + names[1].Length];int nCntr = 0;int nX = 0;while (nX < names[0].Length){unicodeChars[nCntr] = firstName[nX];nX++;nCntr++;}nX = 0;while (nX < names[1].Length){unicodeChars[nCntr] = secondName[nX];nX++;nCntr++;}IccMultiLocalizedUnicode iccMultiLocalized = new IccMultiLocalizedUnicode(12, nameRecord, unicodeChars);IccMultiLocalizedUnicodeTagType iccMultiLocalizedTagType = new IccMultiLocalizedUnicodeTagType(iccMultiLocalized);return iccMultiLocalizedTagType;}public void IccProfileSequenceDescriptionTagTypeExample(){// load an Icc Profilestring fileName = Path.Combine(LEAD_VARS.ImagesDir, "ReadFromImageCS.icc");IccProfileExtended iccProfile = new IccProfileExtended(fileName);// define the device attributes must be 8 bytesbyte[] deviceAttribs = new byte[8] { 0, 0, 0, 0, 0, 0, 0, 0 };// define the device manufacturer and model descriptionsIccMultiLocalizedUnicodeTagType devManufacturerDesc = FillIccMultiLocalizedUnicodeTagType();IccMultiLocalizedUnicodeTagType devModelDesc = FillIccMultiLocalizedUnicodeTagType();// if a tag type is used inside another tag type, it should be converted// into BigIndian notation first. And that can be done by calling the// IccProfile.CreateICCTagData() methoddevManufacturerDesc = (IccMultiLocalizedUnicodeTagType)IccTools.CreateTagType(devManufacturerDesc, IccTagTypeBase.MultiLocalizedUnicodeTypeSignature);devModelDesc = (IccMultiLocalizedUnicodeTagType)IccTools.CreateTagType(devModelDesc, IccTagTypeBase.MultiLocalizedUnicodeTypeSignature);// define the 1 profile descriptionsIccProfileDescription[] profileDescription = new IccProfileDescription[1];profileDescription[0] = new IccProfileDescription(0x46464549,0x0,deviceAttribs,IccTechnologySignatureType.None,devManufacturerDesc,devModelDesc);// create the IccProfileSequenceDescription classIccProfileSequenceDescription profileSeqDesc = new IccProfileSequenceDescription(profileDescription);// define the tag typeIccProfileSequenceDescriptionTagType profileSeqDescTagType = new IccProfileSequenceDescriptionTagType(profileSeqDesc);// add the new tag to the ICC ProfileiccProfile.AddTag(profileSeqDescTagType, IccTag.ProfileSequenceDescTag, IccTagTypeBase.ProfileSequenceDescTypeSignature);// generate the new profile idiccProfile.GenerateProfileId();// update the icc array with the new changesiccProfile.UpdateDataArray();// write the Icc Profile into a new filestring IccfileName = Path.Combine(LEAD_VARS.ImagesDir, "IccProfileSequenceDescriptionTagTypeCS.icc");iccProfile.GenerateIccFile(IccfileName);}static class LEAD_VARS{public const string ImagesDir = @"C:\LEADTOOLS22\Resources\Images";}