private void GetIccProfile() { if (iccProfile == null) { iccProfile = ICCProfile.Load(Profile.GetBody(true).ToByteArray()); } }
private void GetIccProfile() { if (iccProfile == null) { iccProfile = ICCProfile.Load(Profile.GetBody(true).GetBuffer()); } }
public static ICCProfile Load(byte[] data) { var profile = new ICCProfile(); var header = new ICCHeader(); var buffer = new Bytes.Buffer(data); header.ProfileSize = buffer.ReadUnsignedInt(); header.CMMTypeSignature = buffer.ReadUnsignedInt(); header.ProfileVersionNumber.Major = (byte)buffer.ReadByte(); header.ProfileVersionNumber.Minor = (byte)buffer.ReadByte(); header.ProfileVersionNumber.Reserv1 = (byte)buffer.ReadByte(); header.ProfileVersionNumber.Reserv2 = (byte)buffer.ReadByte(); header.ProfileDeviceClassSignature = (ICCProfileDeviceSignatures)buffer.ReadUnsignedInt(); header.ColorSpaceOfData = (ICCColorSpaceSignatures)buffer.ReadUnsignedInt(); header.ProfileConnectionSpace = (ICCColorSpaceSignatures)buffer.ReadUnsignedInt(); header.DateCreated.Load(buffer); header.acsp = buffer.ReadUnsignedInt(); header.PrimaryPlatformSignature = (ICCPrimaryPlatformSignatures)buffer.ReadUnsignedInt(); header.Flags = (ICCProfileFlags)buffer.ReadUnsignedInt(); header.DeviceManufacturer = buffer.ReadUnsignedInt(); header.DeviceModel = buffer.ReadUnsignedInt(); header.DeviceAttributes.Load(buffer); header.RenderingIntent.Intents = buffer.ReadUnsignedShort(); header.RenderingIntent.Reserved = buffer.ReadUnsignedShort(); header.XYZ.Load(buffer); header.ProfileCreatorSignature = buffer.ReadUnsignedInt(); header.FutureUse = new byte[44]; buffer.Read(header.FutureUse); profile.Header = header; var tagCount = buffer.ReadUnsignedInt(); for (int i = 0; i < tagCount; i++) { var tag = new ICCTagTable(); tag.Signature = (ICCTagTypes)buffer.ReadUnsignedInt(); tag.Offset = buffer.ReadUnsignedInt(); tag.ElementSize = buffer.ReadUnsignedInt(); profile.Tags[tag.Signature] = tag; } foreach (var tagTable in profile.Tags.Values) { buffer.Seek(tagTable.Offset); var key = buffer.ReadUnsignedInt(); if (Types.TryGetValue(key, out var type)) { tagTable.Tag = (ICCTag)Activator.CreateInstance(type, tagTable); tagTable.Tag.Profile = profile; tagTable.Tag.Load(buffer); } } return(profile); }