From ee96011669a4a7848bcb1f4a58927015bdb6cf6d Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Tue, 14 Apr 2020 11:04:04 +0200 Subject: [PATCH 01/15] Add support for reading IPTC metadata --- .../Components/Decoder/ProfileResolver.cs | 24 ++ .../Formats/Jpeg/JpegDecoderCore.cs | 120 +++++- src/ImageSharp/Metadata/ImageMetadata.cs | 6 + .../Metadata/Profiles/IPTC/IptcProfile.cs | 204 ++++++++++ .../Metadata/Profiles/IPTC/IptcTag.cs | 351 ++++++++++++++++++ .../Metadata/Profiles/IPTC/IptcValue.cs | 167 +++++++++ .../Metadata/Profiles/IPTC/README.md | 9 + 7 files changed, 872 insertions(+), 9 deletions(-) create mode 100644 src/ImageSharp/Metadata/Profiles/IPTC/IptcProfile.cs create mode 100644 src/ImageSharp/Metadata/Profiles/IPTC/IptcTag.cs create mode 100644 src/ImageSharp/Metadata/Profiles/IPTC/IptcValue.cs create mode 100644 src/ImageSharp/Metadata/Profiles/IPTC/README.md diff --git a/src/ImageSharp/Formats/Jpeg/Components/Decoder/ProfileResolver.cs b/src/ImageSharp/Formats/Jpeg/Components/Decoder/ProfileResolver.cs index 87b486ea6..325d7780a 100644 --- a/src/ImageSharp/Formats/Jpeg/Components/Decoder/ProfileResolver.cs +++ b/src/ImageSharp/Formats/Jpeg/Components/Decoder/ProfileResolver.cs @@ -28,6 +28,30 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder (byte)'I', (byte)'L', (byte)'E', (byte)'\0' }; + /// + /// Gets the adobe photoshop APP13 marker which can contain IPTC meta data. + /// + public static ReadOnlySpan AdobePhotoshopApp13Marker => new[] + { + (byte)'P', (byte)'h', (byte)'o', (byte)'t', (byte)'o', (byte)'s', (byte)'h', (byte)'o', (byte)'p', (byte)' ', (byte)'3', (byte)'.', (byte)'0', (byte)'\0' + }; + + /// + /// Gets the 8BIM marker, which signals the start of a adobe specific image resource block. + /// + public static ReadOnlySpan AdobeImageResourceBlockMarker => new[] + { + (byte)'8', (byte)'B', (byte)'I', (byte)'M' + }; + + /// + /// Gets a IPTC Image resource ID. + /// + public static ReadOnlySpan AdobeIptcMarker => new[] + { + (byte)4, (byte)4 + }; + /// /// Gets the EXIF specific markers. /// diff --git a/src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs b/src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs index 951fec1d4..46f0e694e 100644 --- a/src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs +++ b/src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs @@ -14,6 +14,7 @@ using SixLabors.ImageSharp.Memory; using SixLabors.ImageSharp.Metadata; using SixLabors.ImageSharp.Metadata.Profiles.Exif; using SixLabors.ImageSharp.Metadata.Profiles.Icc; +using SixLabors.ImageSharp.Metadata.Profiles.Iptc; using SixLabors.ImageSharp.PixelFormats; namespace SixLabors.ImageSharp.Formats.Jpeg @@ -46,7 +47,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg private readonly byte[] markerBuffer = new byte[2]; /// - /// The DC Huffman tables + /// The DC Huffman tables. /// private HuffmanTable[] dcHuffmanTables; @@ -56,37 +57,47 @@ namespace SixLabors.ImageSharp.Formats.Jpeg private HuffmanTable[] acHuffmanTables; /// - /// The reset interval determined by RST markers + /// The reset interval determined by RST markers. /// private ushort resetInterval; /// - /// Whether the image has an EXIF marker + /// Whether the image has an EXIF marker. /// private bool isExif; /// - /// Contains exif data + /// Contains exif data. /// private byte[] exifData; /// - /// Whether the image has an ICC marker + /// Whether the image has an ICC marker. /// private bool isIcc; /// - /// Contains ICC data + /// Contains ICC data. /// private byte[] iccData; /// - /// Contains information about the JFIF marker + /// Whether the image has a IPTC data. + /// + private bool isIptc; + + /// + /// Contains IPTC data. + /// + private byte[] iptcData; + + /// + /// Contains information about the JFIF marker. /// private JFifMarker jFif; /// - /// Contains information about the Adobe marker + /// Contains information about the Adobe marker. /// private AdobeMarker adobe; @@ -213,6 +224,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg this.ParseStream(stream); this.InitExifProfile(); this.InitIccProfile(); + this.InitIptcProfile(); this.InitDerivedMetadataProperties(); return this.PostProcessIntoImage(); } @@ -226,6 +238,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg this.ParseStream(stream, true); this.InitExifProfile(); this.InitIccProfile(); + this.InitIptcProfile(); this.InitDerivedMetadataProperties(); return new ImageInfo(new PixelTypeInfo(this.BitsPerPixel), this.ImageWidth, this.ImageHeight, this.Metadata); @@ -344,10 +357,13 @@ namespace SixLabors.ImageSharp.Formats.Jpeg case JpegConstants.Markers.APP10: case JpegConstants.Markers.APP11: case JpegConstants.Markers.APP12: - case JpegConstants.Markers.APP13: this.InputStream.Skip(remaining); break; + case JpegConstants.Markers.APP13: + this.ProcessApp13Marker(remaining); + break; + case JpegConstants.Markers.APP14: this.ProcessApp14Marker(remaining); break; @@ -437,6 +453,18 @@ namespace SixLabors.ImageSharp.Formats.Jpeg } } + /// + /// Initializes the IPTC profile. + /// + private void InitIptcProfile() + { + if (this.isIptc) + { + var profile = new IptcProfile(this.iptcData); + this.Metadata.IptcProfile = profile; + } + } + /// /// Assigns derived metadata properties to , eg. horizontal and vertical resolution if it has a JFIF header. /// @@ -582,6 +610,80 @@ namespace SixLabors.ImageSharp.Formats.Jpeg } } + /// + /// Processes a App13 marker, which contains IPTC data stored with Adobe Photoshop. + /// The content of an APP13 segment is formed by an identifier string followed by a sequence of resource data blocks. + /// + /// The remaining bytes in the segment block. + private void ProcessApp13Marker(int remaining) + { + if (remaining < ProfileResolver.AdobePhotoshopApp13Marker.Length || this.IgnoreMetadata) + { + this.InputStream.Skip(remaining); + return; + } + + var identifier = new byte[ProfileResolver.AdobePhotoshopApp13Marker.Length]; + this.InputStream.Read(identifier, 0, identifier.Length); + remaining -= identifier.Length; + if (ProfileResolver.IsProfile(identifier, ProfileResolver.AdobePhotoshopApp13Marker)) + { + var resourceBlockData = new byte[remaining]; + this.InputStream.Read(resourceBlockData, 0, remaining); + Span blockDataSpan = resourceBlockData.AsSpan(); + + while (blockDataSpan.Length > 10) + { + if (!ProfileResolver.IsProfile(blockDataSpan.Slice(0, 4), ProfileResolver.AdobeImageResourceBlockMarker)) + { + return; + } + + blockDataSpan = blockDataSpan.Slice(4); + Span imageResourceBlockId = blockDataSpan.Slice(0, 2); + if (ProfileResolver.IsProfile(imageResourceBlockId, ProfileResolver.AdobeIptcMarker)) + { + var resourceBlockNameLength = ReadImageResourceNameLength(blockDataSpan); + var resourceDataSize = ReadResourceDataLength(blockDataSpan, resourceBlockNameLength); + this.isIptc = true; + this.iptcData = blockDataSpan.Slice(2 + resourceBlockNameLength + 4, resourceDataSize).ToArray(); + break; + } + else + { + var resourceBlockNameLength = ReadImageResourceNameLength(blockDataSpan); + var resourceDataSize = ReadResourceDataLength(blockDataSpan, resourceBlockNameLength); + blockDataSpan = blockDataSpan.Slice(2 + resourceBlockNameLength + 4 + resourceDataSize); + } + } + } + } + + /// + /// Reads the adobe image resource block name: a Pascal string (padded to make size even). + /// + /// The span holding the block resource data. + /// The length of the name. + [MethodImpl(InliningOptions.ShortMethod)] + private static int ReadImageResourceNameLength(Span blockDataSpan) + { + byte nameLength = blockDataSpan[2]; + var nameDataSize = nameLength == 0 ? 2 : nameLength; + return nameDataSize; + } + + /// + /// Reads the length of a adobe image resource data block. + /// + /// The span holding the block resource data. + /// The length of the block name. + /// The block length. + [MethodImpl(InliningOptions.ShortMethod)] + private static int ReadResourceDataLength(Span blockDataSpan, int resourceBlockNameLength) + { + return BinaryPrimitives.ReadInt32BigEndian(blockDataSpan.Slice(2 + resourceBlockNameLength, 4)); + } + /// /// Processes the application header containing the Adobe identifier /// which stores image encoding information for DCT filters. diff --git a/src/ImageSharp/Metadata/ImageMetadata.cs b/src/ImageSharp/Metadata/ImageMetadata.cs index b3751bfbd..4fa07592e 100644 --- a/src/ImageSharp/Metadata/ImageMetadata.cs +++ b/src/ImageSharp/Metadata/ImageMetadata.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using SixLabors.ImageSharp.Formats; using SixLabors.ImageSharp.Metadata.Profiles.Exif; using SixLabors.ImageSharp.Metadata.Profiles.Icc; +using SixLabors.ImageSharp.Metadata.Profiles.Iptc; namespace SixLabors.ImageSharp.Metadata { @@ -122,6 +123,11 @@ namespace SixLabors.ImageSharp.Metadata /// public IccProfile IccProfile { get; set; } + /// + /// Gets or sets the iptc profile. + /// + public IptcProfile IptcProfile { get; set; } + /// /// Gets the metadata value associated with the specified key. /// diff --git a/src/ImageSharp/Metadata/Profiles/IPTC/IptcProfile.cs b/src/ImageSharp/Metadata/Profiles/IPTC/IptcProfile.cs new file mode 100644 index 000000000..2b0281b3b --- /dev/null +++ b/src/ImageSharp/Metadata/Profiles/IPTC/IptcProfile.cs @@ -0,0 +1,204 @@ +// Copyright (c) Six Labors and contributors. +// Licensed under the Apache License, Version 2.0. + +using System; +using System.Buffers.Binary; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Text; + +namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc +{ + /// + /// Class that can be used to access an Iptc profile. + /// + /// This source code is from the Magick.Net project: + /// https://github.com/dlemstra/Magick.NET/tree/master/src/Magick.NET/Shared/Profiles/Iptc/IptcProfile.cs + /// + public sealed class IptcProfile + { + private Collection values; + + private byte[] data; + + /// + /// Initializes a new instance of the class. + /// + public IptcProfile() + { + } + + /// + /// Initializes a new instance of the class. + /// + /// The byte array to read the iptc profile from. + public IptcProfile(byte[] data) + { + this.data = data; + } + + /// + /// Gets the values of this iptc profile. + /// + public IEnumerable Values + { + get + { + this.Initialize(); + return this.values; + } + } + + /// + /// Returns the value with the specified tag. + /// + /// The tag of the iptc value. + /// The value with the specified tag. + public IptcValue GetValue(IptcTag tag) + { + foreach (IptcValue iptcValue in this.Values) + { + if (iptcValue.Tag == tag) + { + return iptcValue; + } + } + + return null; + } + + /// + /// Removes the value with the specified tag. + /// + /// The tag of the iptc value. + /// True when the value was fount and removed. + public bool RemoveValue(IptcTag tag) + { + this.Initialize(); + + for (int i = 0; i < this.values.Count; i++) + { + if (this.values[i].Tag == tag) + { + this.values.RemoveAt(i); + return true; + } + } + + return false; + } + + /// + /// Changes the encoding for all the values. + /// + /// The encoding to use when storing the bytes. + public void SetEncoding(Encoding encoding) + { + Guard.NotNull(encoding, nameof(encoding)); + + foreach (IptcValue value in this.Values) + { + value.Encoding = encoding; + } + } + + /// + /// Sets the value of the specified tag. + /// + /// The tag of the iptc value. + /// The encoding to use when storing the bytes. + /// The value. + public void SetValue(IptcTag tag, Encoding encoding, string value) + { + Guard.NotNull(encoding, nameof(encoding)); + + foreach (IptcValue iptcValue in this.Values) + { + if (iptcValue.Tag == tag) + { + iptcValue.Encoding = encoding; + iptcValue.Value = value; + return; + } + } + + this.values.Add(new IptcValue(tag, encoding, value)); + } + + /// + /// Sets the value of the specified tag. + /// + /// The tag of the iptc value. + /// The value. + public void SetValue(IptcTag tag, string value) => this.SetValue(tag, Encoding.UTF8, value); + + /// + /// Updates the data of the profile. + /// + public void UpdateData() + { + var length = 0; + foreach (IptcValue value in this.Values) + { + length += value.Length + 5; + } + + this.data = new byte[length]; + + int i = 0; + foreach (IptcValue value in this.Values) + { + this.data[i++] = 28; + this.data[i++] = 2; + this.data[i++] = (byte)value.Tag; + this.data[i++] = (byte)(value.Length >> 8); + this.data[i++] = (byte)value.Length; + if (value.Length > 0) + { + Buffer.BlockCopy(value.ToByteArray(), 0, this.data, i, value.Length); + i += value.Length; + } + } + } + + private void Initialize() + { + if (this.values != null) + { + return; + } + + this.values = new Collection(); + + if (this.data == null || this.data[0] != 0x1c) + { + return; + } + + int i = 0; + while (i + 4 < this.data.Length) + { + if (this.data[i++] != 28) + { + continue; + } + + i++; + + var tag = (IptcTag)this.data[i++]; + + int count = BinaryPrimitives.ReadInt16BigEndian(this.data.AsSpan(i, 2)); + i += 2; + + var iptcData = new byte[count]; + if ((count > 0) && (i + count <= this.data.Length)) + { + Buffer.BlockCopy(this.data, i, iptcData, 0, count); + this.values.Add(new IptcValue(tag, iptcData)); + } + + i += count; + } + } + } +} diff --git a/src/ImageSharp/Metadata/Profiles/IPTC/IptcTag.cs b/src/ImageSharp/Metadata/Profiles/IPTC/IptcTag.cs new file mode 100644 index 000000000..3e6da0e09 --- /dev/null +++ b/src/ImageSharp/Metadata/Profiles/IPTC/IptcTag.cs @@ -0,0 +1,351 @@ +// Copyright (c) Six Labors and contributors. +// Licensed under the Apache License, Version 2.0. + +namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc +{ + /// + /// All iptc tags. + /// + public enum IptcTag + { + /// + /// Unknown + /// + Unknown = -1, + + /// + /// Record version + /// + RecordVersion = 0, + + /// + /// Object type + /// + ObjectType = 3, + + /// + /// Object attribute + /// + ObjectAttribute = 4, + + /// + /// Title + /// + Title = 5, + + /// + /// Edit status + /// + EditStatus = 7, + + /// + /// Editorial update + /// + EditorialUpdate = 8, + + /// + /// Priority + /// + Priority = 10, + + /// + /// Category + /// + Category = 15, + + /// + /// Supplemental categories + /// + SupplementalCategories = 20, + + /// + /// Fixture identifier + /// + FixtureIdentifier = 22, + + /// + /// Keyword + /// + Keyword = 25, + + /// + /// Location code + /// + LocationCode = 26, + + /// + /// Location name + /// + LocationName = 27, + + /// + /// Release date + /// + ReleaseDate = 30, + + /// + /// Release time + /// + ReleaseTime = 35, + + /// + /// Expiration date + /// + ExpirationDate = 37, + + /// + /// Expiration time + /// + ExpirationTime = 38, + + /// + /// Special instructions + /// + SpecialInstructions = 40, + + /// + /// Action advised + /// + ActionAdvised = 42, + + /// + /// Reference service + /// + ReferenceService = 45, + + /// + /// Reference date + /// + ReferenceDate = 47, + + /// + /// ReferenceNumber + /// + ReferenceNumber = 50, + + /// + /// Created date + /// + CreatedDate = 55, + + /// + /// Created time + /// + CreatedTime = 60, + + /// + /// Digital creation date + /// + DigitalCreationDate = 62, + + /// + /// Digital creation time + /// + DigitalCreationTime = 63, + + /// + /// Originating program + /// + OriginatingProgram = 65, + + /// + /// Program version + /// + ProgramVersion = 70, + + /// + /// Object cycle + /// + ObjectCycle = 75, + + /// + /// Byline + /// + Byline = 80, + + /// + /// Byline title + /// + BylineTitle = 85, + + /// + /// City + /// + City = 90, + + /// + /// Sub location + /// + SubLocation = 92, + + /// + /// Province/State + /// + ProvinceState = 95, + + /// + /// Country code + /// + CountryCode = 100, + + /// + /// Country + /// + Country = 101, + + /// + /// Original transmission reference + /// + OriginalTransmissionReference = 103, + + /// + /// Headline + /// + Headline = 105, + + /// + /// Credit + /// + Credit = 110, + + /// + /// Source + /// + Source = 115, + + /// + /// Copyright notice + /// + CopyrightNotice = 116, + + /// + /// Contact + /// + Contact = 118, + + /// + /// Caption + /// + Caption = 120, + + /// + /// Local caption + /// + LocalCaption = 121, + + /// + /// Caption writer + /// + CaptionWriter = 122, + + /// + /// Image type + /// + ImageType = 130, + + /// + /// Image orientation + /// + ImageOrientation = 131, + + /// + /// Custom field 1 + /// + CustomField1 = 200, + + /// + /// Custom field 2 + /// + CustomField2 = 201, + + /// + /// Custom field 3 + /// + CustomField3 = 202, + + /// + /// Custom field 4 + /// + CustomField4 = 203, + + /// + /// Custom field 5 + /// + CustomField5 = 204, + + /// + /// Custom field 6 + /// + CustomField6 = 205, + + /// + /// Custom field 7 + /// + CustomField7 = 206, + + /// + /// Custom field 8 + /// + CustomField8 = 207, + + /// + /// Custom field 9 + /// + CustomField9 = 208, + + /// + /// Custom field 10 + /// + CustomField10 = 209, + + /// + /// Custom field 11 + /// + CustomField11 = 210, + + /// + /// Custom field 12 + /// + CustomField12 = 211, + + /// + /// Custom field 13 + /// + CustomField13 = 212, + + /// + /// Custom field 14 + /// + CustomField14 = 213, + + /// + /// Custom field 15 + /// + CustomField15 = 214, + + /// + /// Custom field 16 + /// + CustomField16 = 215, + + /// + /// Custom field 17 + /// + CustomField17 = 216, + + /// + /// Custom field 18 + /// + CustomField18 = 217, + + /// + /// Custom field 19 + /// + CustomField19 = 218, + + /// + /// Custom field 20 + /// + CustomField20 = 219, + } +} diff --git a/src/ImageSharp/Metadata/Profiles/IPTC/IptcValue.cs b/src/ImageSharp/Metadata/Profiles/IPTC/IptcValue.cs new file mode 100644 index 000000000..c23a7793e --- /dev/null +++ b/src/ImageSharp/Metadata/Profiles/IPTC/IptcValue.cs @@ -0,0 +1,167 @@ +// Copyright (c) Six Labors and contributors. +// Licensed under the Apache License, Version 2.0. + +using System; +using System.Text; + +namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc +{ + /// + /// A value of the iptc profile. + /// + public sealed class IptcValue + { + private byte[] data; + private Encoding encoding; + + internal IptcValue(IptcTag tag, byte[] value) + { + Guard.NotNull(value, nameof(value)); + + this.Tag = tag; + this.data = value; + this.encoding = Encoding.UTF8; + } + + internal IptcValue(IptcTag tag, Encoding encoding, string value) + { + this.Tag = tag; + this.encoding = encoding; + this.Value = value; + } + + /// + /// Gets or sets the encoding to use for the Value. + /// + public Encoding Encoding + { + get => this.encoding; + set + { + if (value != null) + { + this.encoding = value; + } + } + } + + /// + /// Gets the tag of the iptc value. + /// + public IptcTag Tag { get; } + + /// + /// Gets or sets the value. + /// + public string Value + { + get => this.encoding.GetString(this.data); + set + { + if (string.IsNullOrEmpty(value)) + { + this.data = new byte[0]; + } + else + { + this.data = this.encoding.GetBytes(value); + } + } + } + + /// + /// Gets the length of the value. + /// + public int Length => this.data.Length; + + /// + /// Determines whether the specified object is equal to the current . + /// + /// The object to compare this with. + /// True when the specified object is equal to the current . + public override bool Equals(object obj) + { + if (ReferenceEquals(this, obj)) + { + return true; + } + + return this.Equals(obj as IptcValue); + } + + /// + /// Determines whether the specified iptc value is equal to the current . + /// + /// The iptc value to compare this with. + /// True when the specified iptc value is equal to the current . + public bool Equals(IptcValue other) + { + if (other is null) + { + return false; + } + + if (ReferenceEquals(this, other)) + { + return true; + } + + if (this.Tag != other.Tag) + { + return false; + } + + byte[] data = other.ToByteArray(); + + if (this.data.Length != data.Length) + { + return false; + } + + for (int i = 0; i < this.data.Length; i++) + { + if (this.data[i] != data[i]) + { + return false; + } + } + + return true; + } + + /// + /// Serves as a hash of this type. + /// + /// A hash code for the current instance. + public override int GetHashCode() => HashCode.Combine(this.data, this.Tag); + + /// + /// Converts this instance to a byte array. + /// + /// A array. + public byte[] ToByteArray() + { + var result = new byte[this.data.Length]; + this.data.CopyTo(result, 0); + return result; + } + + /// + /// Returns a string that represents the current value. + /// + /// A string that represents the current value. + public override string ToString() => this.Value; + + /// + /// Returns a string that represents the current value with the specified encoding. + /// + /// The encoding to use. + /// A string that represents the current value with the specified encoding. + public string ToString(Encoding enc) + { + Guard.NotNull(enc, nameof(enc)); + + return enc.GetString(this.data); + } + } +} diff --git a/src/ImageSharp/Metadata/Profiles/IPTC/README.md b/src/ImageSharp/Metadata/Profiles/IPTC/README.md new file mode 100644 index 000000000..0b0efc967 --- /dev/null +++ b/src/ImageSharp/Metadata/Profiles/IPTC/README.md @@ -0,0 +1,9 @@ +IPTC source code is from [Magick.NET](https://github.com/dlemstra/Magick.NET) + +Information about IPTC can be found here in the folowing sources: + +- [metacpan.org, APP13-segment](https://metacpan.org/pod/Image::MetaData::JPEG::Structures#Structure-of-a-Photoshop-style-APP13-segment) + +- [iptc.org](https://www.iptc.org/std/photometadata/documentation/userguide/) + +- [Adobe File Formats Specification](http://oldschoolprg.x10.mx/downloads/ps6ffspecsv2.pdf) \ No newline at end of file From 14312962b264b4c517c6f460f377db0ed7623035 Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Tue, 14 Apr 2020 16:23:14 +0200 Subject: [PATCH 02/15] Add unit tests for reading IPTC profile --- src/ImageSharp/Metadata/ImageMetadata.cs | 1 + .../Metadata/Profiles/Exif/ExifProfile.cs | 3 + .../Metadata/Profiles/IPTC/IptcProfile.cs | 64 +++++++++---- .../Metadata/Profiles/IPTC/IptcValue.cs | 21 ++++- .../Profiles/IPTC/IptcProfileTests.cs | 88 ++++++++++++++++++ tests/ImageSharp.Tests/TestImages.cs | 1 + tests/Images/Input/Jpg/baseline/iptc.jpg | Bin 0 -> 18611 bytes 7 files changed, 159 insertions(+), 19 deletions(-) create mode 100644 tests/ImageSharp.Tests/Metadata/Profiles/IPTC/IptcProfileTests.cs create mode 100644 tests/Images/Input/Jpg/baseline/iptc.jpg diff --git a/src/ImageSharp/Metadata/ImageMetadata.cs b/src/ImageSharp/Metadata/ImageMetadata.cs index 4fa07592e..716e89e68 100644 --- a/src/ImageSharp/Metadata/ImageMetadata.cs +++ b/src/ImageSharp/Metadata/ImageMetadata.cs @@ -66,6 +66,7 @@ namespace SixLabors.ImageSharp.Metadata this.ExifProfile = other.ExifProfile?.DeepClone(); this.IccProfile = other.IccProfile?.DeepClone(); + this.IptcProfile = other.IptcProfile?.DeepClone(); } /// diff --git a/src/ImageSharp/Metadata/Profiles/Exif/ExifProfile.cs b/src/ImageSharp/Metadata/Profiles/Exif/ExifProfile.cs index 11d0bd01b..29c21d611 100644 --- a/src/ImageSharp/Metadata/Profiles/Exif/ExifProfile.cs +++ b/src/ImageSharp/Metadata/Profiles/Exif/ExifProfile.cs @@ -57,8 +57,11 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Exif /// by making a copy from another EXIF profile. /// /// The other EXIF profile, where the clone should be made from. + /// is null.> private ExifProfile(ExifProfile other) { + Guard.NotNull(other, nameof(other)); + this.Parts = other.Parts; this.thumbnailLength = other.thumbnailLength; this.thumbnailOffset = other.thumbnailOffset; diff --git a/src/ImageSharp/Metadata/Profiles/IPTC/IptcProfile.cs b/src/ImageSharp/Metadata/Profiles/IPTC/IptcProfile.cs index 2b0281b3b..57704949c 100644 --- a/src/ImageSharp/Metadata/Profiles/IPTC/IptcProfile.cs +++ b/src/ImageSharp/Metadata/Profiles/IPTC/IptcProfile.cs @@ -15,16 +15,15 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc /// This source code is from the Magick.Net project: /// https://github.com/dlemstra/Magick.NET/tree/master/src/Magick.NET/Shared/Profiles/Iptc/IptcProfile.cs /// - public sealed class IptcProfile + public sealed class IptcProfile : IDeepCloneable { private Collection values; - private byte[] data; - /// /// Initializes a new instance of the class. /// public IptcProfile() + : this((byte[])null) { } @@ -34,9 +33,35 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc /// The byte array to read the iptc profile from. public IptcProfile(byte[] data) { - this.data = data; + this.Data = data; + } + + private IptcProfile(IptcProfile other) + { + Guard.NotNull(other, nameof(other)); + + if (other.values != null) + { + this.values = new Collection(); + + foreach (IptcValue value in other.Values) + { + this.values.Add(value.DeepClone()); + } + } + + if (other.Data != null) + { + this.Data = new byte[other.Data.Length]; + other.Data.AsSpan().CopyTo(this.Data); + } } + /// + /// Gets the byte data of the IPTC profile. + /// + public byte[] Data { get; private set; } + /// /// Gets the values of this iptc profile. /// @@ -49,6 +74,9 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc } } + /// + public IptcProfile DeepClone() => new IptcProfile(this); + /// /// Returns the value with the specified tag. /// @@ -143,19 +171,19 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc length += value.Length + 5; } - this.data = new byte[length]; + this.Data = new byte[length]; int i = 0; foreach (IptcValue value in this.Values) { - this.data[i++] = 28; - this.data[i++] = 2; - this.data[i++] = (byte)value.Tag; - this.data[i++] = (byte)(value.Length >> 8); - this.data[i++] = (byte)value.Length; + this.Data[i++] = 28; + this.Data[i++] = 2; + this.Data[i++] = (byte)value.Tag; + this.Data[i++] = (byte)(value.Length >> 8); + this.Data[i++] = (byte)value.Length; if (value.Length > 0) { - Buffer.BlockCopy(value.ToByteArray(), 0, this.data, i, value.Length); + Buffer.BlockCopy(value.ToByteArray(), 0, this.Data, i, value.Length); i += value.Length; } } @@ -170,30 +198,30 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc this.values = new Collection(); - if (this.data == null || this.data[0] != 0x1c) + if (this.Data == null || this.Data[0] != 0x1c) { return; } int i = 0; - while (i + 4 < this.data.Length) + while (i + 4 < this.Data.Length) { - if (this.data[i++] != 28) + if (this.Data[i++] != 28) { continue; } i++; - var tag = (IptcTag)this.data[i++]; + var tag = (IptcTag)this.Data[i++]; - int count = BinaryPrimitives.ReadInt16BigEndian(this.data.AsSpan(i, 2)); + int count = BinaryPrimitives.ReadInt16BigEndian(this.Data.AsSpan(i, 2)); i += 2; var iptcData = new byte[count]; - if ((count > 0) && (i + count <= this.data.Length)) + if ((count > 0) && (i + count <= this.Data.Length)) { - Buffer.BlockCopy(this.data, i, iptcData, 0, count); + Buffer.BlockCopy(this.Data, i, iptcData, 0, count); this.values.Add(new IptcValue(tag, iptcData)); } diff --git a/src/ImageSharp/Metadata/Profiles/IPTC/IptcValue.cs b/src/ImageSharp/Metadata/Profiles/IPTC/IptcValue.cs index c23a7793e..a5977fd27 100644 --- a/src/ImageSharp/Metadata/Profiles/IPTC/IptcValue.cs +++ b/src/ImageSharp/Metadata/Profiles/IPTC/IptcValue.cs @@ -9,11 +9,27 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc /// /// A value of the iptc profile. /// - public sealed class IptcValue + public sealed class IptcValue : IDeepCloneable { private byte[] data; private Encoding encoding; + internal IptcValue(IptcValue other) + { + if (other.data != null) + { + this.data = new byte[other.data.Length]; + other.data.AsSpan().CopyTo(this.data); + } + + if (other.Encoding != null) + { + this.Encoding = (Encoding)other.Encoding.Clone(); + } + + this.Tag = other.Tag; + } + internal IptcValue(IptcTag tag, byte[] value) { Guard.NotNull(value, nameof(value)); @@ -74,6 +90,9 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc /// public int Length => this.data.Length; + /// + public IptcValue DeepClone() => new IptcValue(this); + /// /// Determines whether the specified object is equal to the current . /// diff --git a/tests/ImageSharp.Tests/Metadata/Profiles/IPTC/IptcProfileTests.cs b/tests/ImageSharp.Tests/Metadata/Profiles/IPTC/IptcProfileTests.cs new file mode 100644 index 000000000..045859c36 --- /dev/null +++ b/tests/ImageSharp.Tests/Metadata/Profiles/IPTC/IptcProfileTests.cs @@ -0,0 +1,88 @@ +// Copyright (c) Six Labors and contributors. +// Licensed under the Apache License, Version 2.0. + +using System.Collections.Generic; +using System.Linq; +using SixLabors.ImageSharp.Formats.Jpeg; +using SixLabors.ImageSharp.Metadata.Profiles.Iptc; +using SixLabors.ImageSharp.PixelFormats; +using Xunit; + +namespace SixLabors.ImageSharp.Tests.Metadata.Profiles.IPTC +{ + public class IptcProfileTests + { + private static JpegDecoder JpegDecoder => new JpegDecoder() { IgnoreMetadata = false }; + + [Theory] + [WithFile(TestImages.Jpeg.Baseline.Iptc, PixelTypes.Rgba32)] + public void ReadIptcProfile(TestImageProvider provider) + where TPixel : unmanaged, IPixel + { + using (Image image = provider.GetImage(JpegDecoder)) + { + Assert.NotNull(image.Metadata.IptcProfile); + IEnumerable iptcValues = image.Metadata.IptcProfile.Values; + ContainsIptcValue(iptcValues, IptcTag.Caption, "description"); + ContainsIptcValue(iptcValues, IptcTag.CaptionWriter, "description writer"); + ContainsIptcValue(iptcValues, IptcTag.Headline, "headline"); + ContainsIptcValue(iptcValues, IptcTag.SpecialInstructions, "special instructions"); + ContainsIptcValue(iptcValues, IptcTag.Byline, "author"); + ContainsIptcValue(iptcValues, IptcTag.BylineTitle, "author title"); + ContainsIptcValue(iptcValues, IptcTag.Credit, "credits"); + ContainsIptcValue(iptcValues, IptcTag.Source, "source"); + ContainsIptcValue(iptcValues, IptcTag.Title, "title"); + ContainsIptcValue(iptcValues, IptcTag.CreatedDate, "20200414"); + ContainsIptcValue(iptcValues, IptcTag.City, "city"); + ContainsIptcValue(iptcValues, IptcTag.SubLocation, "sublocation"); + ContainsIptcValue(iptcValues, IptcTag.ProvinceState, "province-state"); + ContainsIptcValue(iptcValues, IptcTag.Country, "country"); + ContainsIptcValue(iptcValues, IptcTag.Category, "category"); + ContainsIptcValue(iptcValues, IptcTag.Priority, "1"); + ContainsIptcValue(iptcValues, IptcTag.Keyword, "keywords"); + ContainsIptcValue(iptcValues, IptcTag.CopyrightNotice, "copyright"); + } + } + + [Fact] + public void IptcProfile_CloneIsDeep() + { + // arrange + var profile = new IptcProfile(); + var captionWriter = "unittest"; + var caption = "test"; + profile.SetValue(IptcTag.CaptionWriter, captionWriter); + profile.SetValue(IptcTag.Caption, caption); + + // act + IptcProfile clone = profile.DeepClone(); + clone.SetValue(IptcTag.Caption, "changed"); + + // assert + Assert.Equal(2, clone.Values.Count()); + ContainsIptcValue(clone.Values, IptcTag.CaptionWriter, captionWriter); + ContainsIptcValue(clone.Values, IptcTag.Caption, "changed"); + ContainsIptcValue(profile.Values, IptcTag.Caption, caption); + } + + [Fact] + public void IptcValue_CloneIsDeep() + { + // arrange + var iptcValue = new IptcValue(IptcTag.Caption, System.Text.Encoding.UTF8, "test"); + + // act + IptcValue clone = iptcValue.DeepClone(); + clone.Value = "changed"; + + // assert + Assert.NotEqual(iptcValue.Value, clone.Value); + } + + private static void ContainsIptcValue(IEnumerable values, IptcTag tag, string value) + { + Assert.True(values.Any(val => val.Tag == tag), $"Missing iptc tag {tag}"); + Assert.True(values.Contains(new IptcValue(tag, System.Text.Encoding.UTF8.GetBytes(value))), $"expected iptc value '{value}' was not found for tag '{tag}'"); + } + } +} diff --git a/tests/ImageSharp.Tests/TestImages.cs b/tests/ImageSharp.Tests/TestImages.cs index 892568803..d006c6682 100644 --- a/tests/ImageSharp.Tests/TestImages.cs +++ b/tests/ImageSharp.Tests/TestImages.cs @@ -162,6 +162,7 @@ namespace SixLabors.ImageSharp.Tests public const string LowContrast = "Jpg/baseline/AsianCarvingLowContrast.jpg"; public const string Testorig12bit = "Jpg/baseline/testorig12.jpg"; public const string YcckSubsample1222 = "Jpg/baseline/ycck-subsample-1222.jpg"; + public const string Iptc = "Jpg/baseline/iptc.jpg"; public static readonly string[] All = { diff --git a/tests/Images/Input/Jpg/baseline/iptc.jpg b/tests/Images/Input/Jpg/baseline/iptc.jpg new file mode 100644 index 0000000000000000000000000000000000000000..de30930d6b1db7b7bc7239dfd3b4145d814afefb GIT binary patch literal 18611 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


{^xg;q*`?zA!sq*a7t};Y zC8_JqMAV7v9Cfs``$5FU-%D7JSjjJtyEhN~XGqPd2@P+(!i7OziT%sADJ2)0kCm>M zE?&Be`CE%m>RQs%<}Jzb32Sao8t?X4?RhgVWZ6B8z3m6Pta8!C`KxaugSWXnro760 zrFkRt2^l_r^*~YD5L^4A{M}w(IPN{k6d%1a_{zR-wlDe;i=UPJq@q}~WhwT1Dz+iq zV?@Y|4bi!?co*0B{&1L~&fqrvGMPJP|GE={PKC|fI6ty%#ARn$)@Qj)yY$Z{*VgBw zlWGie-SaTvZuhv&_RfaY3f{3` z$GWX?f=j>4s-8+cHV=gz*o|Mrc(i>!>+B( zp7}ENYWT*Vj#hu_x7BXLvDRGI>48TJb!Q(sk9?KNh#sFZ{$vrE?0sC3t6FeDL*7(Z zp0|?rwkoIqks~p;9*$wQ4!$>(|C8tkKmYZ0B?ouDLbh$5>SK7RZm!(4NVILQ?!gzc zJNzMB;gm`xhtR25v8bK<-sX^v-0CO6x62NqiQ6s1gNXPlgO zS$)DWW%z5a1eMvjZoIjf;&&zpXie|z|G(|51JTfIy4iw{xSAk6{A3H#wg0?*~Y zaH^&Uv6h4{;%(jEa{l_v{rSz5AtUqiH%a#mf=O6WOLJWMqo8?54%F-BILw&vEM?%+ zpC_OEcw~hm=f-5njHs5&w>POgp}SU9%u~ z8j|t#vBv}HS+lQMqsEF@zxn{$=!~67b$&yq50d$3y9O*vo-q5!N1jpFw%l+iPN>>E zIn>GP<%7~1^4szM-cwsoDSlmc^jKtrVB4E|^5fWZFS1B43oFNN4Euzd$vherfX!0P zKOMUE@~|+v&fW7?Sy<|bOPdeN`+reCs(!)#s^!_Tkl-wFtG{@aKin8Qx@0EP{?Uob znuYj6IJk-0B+w+n1)DyT2rZk+g0k>^HT&9e_EI1ysJvUuvGPaT#O${t0R51%Wy zp=}v^-?^lp8|UCt^1|JohgS3RHXn)}5axO=HDaPXIJKbi%bZEGo17jC3Tlh;`u#e2 zXZk9SM-^LHuMdB}bX3;iwMPe5&ELz>_^#MF_`DlOl@YN2hR5ZI%~=0iDOzU!y|bym m>o!KjjMOaqY^3T^|IBcYH%C>Kb7|A|j}mfJHSsswYX1*+AgjFq literal 0 HcmV?d00001 From ba883d7c8ad493188b3dc514dea176cfac380e6e Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Tue, 14 Apr 2020 18:27:42 +0200 Subject: [PATCH 03/15] Add support for writing IPTC metadata --- .../Formats/Jpeg/JpegEncoderCore.cs | 54 ++++++++++++++++--- 1 file changed, 47 insertions(+), 7 deletions(-) diff --git a/src/ImageSharp/Formats/Jpeg/JpegEncoderCore.cs b/src/ImageSharp/Formats/Jpeg/JpegEncoderCore.cs index 32f4d2287..4791a04a0 100644 --- a/src/ImageSharp/Formats/Jpeg/JpegEncoderCore.cs +++ b/src/ImageSharp/Formats/Jpeg/JpegEncoderCore.cs @@ -4,6 +4,7 @@ using System; using System.Buffers.Binary; using System.IO; +using System.Linq; using System.Runtime.CompilerServices; using SixLabors.ImageSharp.Common.Helpers; using SixLabors.ImageSharp.Formats.Jpeg.Components; @@ -13,6 +14,7 @@ using SixLabors.ImageSharp.Memory; using SixLabors.ImageSharp.Metadata; using SixLabors.ImageSharp.Metadata.Profiles.Exif; using SixLabors.ImageSharp.Metadata.Profiles.Icc; +using SixLabors.ImageSharp.Metadata.Profiles.Iptc; using SixLabors.ImageSharp.PixelFormats; namespace SixLabors.ImageSharp.Formats.Jpeg @@ -647,9 +649,6 @@ namespace SixLabors.ImageSharp.Formats.Jpeg /// Writes the EXIF profile. /// /// The exif profile. - /// - /// Thrown if the EXIF profile size exceeds the limit - /// private void WriteExifProfile(ExifProfile exifProfile) { if (exifProfile is null || exifProfile.Values.Count == 0) @@ -697,16 +696,56 @@ namespace SixLabors.ImageSharp.Formats.Jpeg } } + /// + /// Writes the IPTC metadata. + /// + /// The iptc metadata to write. + private void WriteIptcProfile(IptcProfile iptcProfile) + { + if (iptcProfile is null || !iptcProfile.Values.Any()) + { + return; + } + + iptcProfile.UpdateData(); + var data = iptcProfile.Data; + if (data.Length == 0) + { + return; + } + + var app13length = data.Length + ProfileResolver.AdobeImageResourceBlockMarker.Length + ProfileResolver.AdobeIptcMarker.Length + 2 + 4; + this.WriteAppHeader(app13length, JpegConstants.Markers.APP13); + this.outputStream.Write(this.buffer, 0, 4); + this.outputStream.Write(ProfileResolver.AdobeImageResourceBlockMarker); + this.outputStream.Write(ProfileResolver.AdobeIptcMarker); + this.outputStream.WriteByte(0); // a null name consists of two bytes of 0. + this.outputStream.WriteByte(0); + BinaryPrimitives.WriteInt32BigEndian(this.buffer, data.Length); + this.outputStream.Write(this.buffer, 0, 4); + this.outputStream.Write(data, 0, data.Length); + } + /// /// Writes the App1 header. /// - /// The length of the data the app1 marker contains + /// The length of the data the app1 marker contains. private void WriteApp1Header(int app1Length) + { + this.WriteAppHeader(app1Length, JpegConstants.Markers.APP1); + } + + /// + /// Writes a AppX header. + /// + /// The length of the data the app marker contains. + /// The app marker to write. + private void WriteAppHeader(int length, byte appMarker) { this.buffer[0] = JpegConstants.Markers.XFF; - this.buffer[1] = JpegConstants.Markers.APP1; // Application Marker - this.buffer[2] = (byte)((app1Length >> 8) & 0xFF); - this.buffer[3] = (byte)(app1Length & 0xFF); + this.buffer[1] = appMarker; + this.buffer[2] = (byte)((length >> 8) & 0xFF); + this.buffer[3] = (byte)(length & 0xFF); this.outputStream.Write(this.buffer, 0, 4); } @@ -805,6 +844,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg metadata.SyncProfiles(); this.WriteExifProfile(metadata.ExifProfile); this.WriteIccProfile(metadata.IccProfile); + this.WriteIptcProfile(metadata.IptcProfile); } /// From 0e49478f37964d7603a069597ef4319ae3c49dbb Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Wed, 15 Apr 2020 15:00:25 +0200 Subject: [PATCH 04/15] Add tests for writing IPTC --- .../Formats/Jpeg/JpegDecoderCore.cs | 11 ++-- .../Formats/Jpeg/JpegEncoderCore.cs | 15 +++-- .../Profiles/IPTC/IptcProfileTests.cs | 60 ++++++++++++++++++- 3 files changed, 72 insertions(+), 14 deletions(-) diff --git a/src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs b/src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs index 46f0e694e..023bbaac7 100644 --- a/src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs +++ b/src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs @@ -623,17 +623,16 @@ namespace SixLabors.ImageSharp.Formats.Jpeg return; } - var identifier = new byte[ProfileResolver.AdobePhotoshopApp13Marker.Length]; - this.InputStream.Read(identifier, 0, identifier.Length); - remaining -= identifier.Length; - if (ProfileResolver.IsProfile(identifier, ProfileResolver.AdobePhotoshopApp13Marker)) + this.InputStream.Read(this.temp, 0, ProfileResolver.AdobePhotoshopApp13Marker.Length); + remaining -= ProfileResolver.AdobePhotoshopApp13Marker.Length; + if (ProfileResolver.IsProfile(this.temp, ProfileResolver.AdobePhotoshopApp13Marker)) { var resourceBlockData = new byte[remaining]; this.InputStream.Read(resourceBlockData, 0, remaining); Span blockDataSpan = resourceBlockData.AsSpan(); - while (blockDataSpan.Length > 10) - { + while (blockDataSpan.Length > 12) + { if (!ProfileResolver.IsProfile(blockDataSpan.Slice(0, 4), ProfileResolver.AdobeImageResourceBlockMarker)) { return; diff --git a/src/ImageSharp/Formats/Jpeg/JpegEncoderCore.cs b/src/ImageSharp/Formats/Jpeg/JpegEncoderCore.cs index 4791a04a0..a3786ae1c 100644 --- a/src/ImageSharp/Formats/Jpeg/JpegEncoderCore.cs +++ b/src/ImageSharp/Formats/Jpeg/JpegEncoderCore.cs @@ -233,7 +233,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg // Write the Start Of Image marker. this.WriteApplicationHeader(metadata); - // Write Exif and ICC profiles + // Write Exif, ICC and IPTC profiles this.WriteProfiles(metadata); // Write the quantization tables. @@ -708,18 +708,21 @@ namespace SixLabors.ImageSharp.Formats.Jpeg } iptcProfile.UpdateData(); - var data = iptcProfile.Data; + byte[] data = iptcProfile.Data; if (data.Length == 0) { return; } - var app13length = data.Length + ProfileResolver.AdobeImageResourceBlockMarker.Length + ProfileResolver.AdobeIptcMarker.Length + 2 + 4; - this.WriteAppHeader(app13length, JpegConstants.Markers.APP13); - this.outputStream.Write(this.buffer, 0, 4); + var app13Length = 2 + ProfileResolver.AdobePhotoshopApp13Marker.Length + + ProfileResolver.AdobeImageResourceBlockMarker.Length + + ProfileResolver.AdobeIptcMarker.Length + + 2 + 4 + data.Length; + this.WriteAppHeader(app13Length, JpegConstants.Markers.APP13); + this.outputStream.Write(ProfileResolver.AdobePhotoshopApp13Marker); this.outputStream.Write(ProfileResolver.AdobeImageResourceBlockMarker); this.outputStream.Write(ProfileResolver.AdobeIptcMarker); - this.outputStream.WriteByte(0); // a null name consists of two bytes of 0. + this.outputStream.WriteByte(0); // a empty pascal string (padded to make size even) this.outputStream.WriteByte(0); BinaryPrimitives.WriteInt32BigEndian(this.buffer, data.Length); this.outputStream.Write(this.buffer, 0, 4); diff --git a/tests/ImageSharp.Tests/Metadata/Profiles/IPTC/IptcProfileTests.cs b/tests/ImageSharp.Tests/Metadata/Profiles/IPTC/IptcProfileTests.cs index 045859c36..40dd76836 100644 --- a/tests/ImageSharp.Tests/Metadata/Profiles/IPTC/IptcProfileTests.cs +++ b/tests/ImageSharp.Tests/Metadata/Profiles/IPTC/IptcProfileTests.cs @@ -2,6 +2,7 @@ // Licensed under the Apache License, Version 2.0. using System.Collections.Generic; +using System.IO; using System.Linq; using SixLabors.ImageSharp.Formats.Jpeg; using SixLabors.ImageSharp.Metadata.Profiles.Iptc; @@ -16,13 +17,13 @@ namespace SixLabors.ImageSharp.Tests.Metadata.Profiles.IPTC [Theory] [WithFile(TestImages.Jpeg.Baseline.Iptc, PixelTypes.Rgba32)] - public void ReadIptcProfile(TestImageProvider provider) + public void ReadIptcMetadata_Works(TestImageProvider provider) where TPixel : unmanaged, IPixel { using (Image image = provider.GetImage(JpegDecoder)) { Assert.NotNull(image.Metadata.IptcProfile); - IEnumerable iptcValues = image.Metadata.IptcProfile.Values; + var iptcValues = image.Metadata.IptcProfile.Values.ToList(); ContainsIptcValue(iptcValues, IptcTag.Caption, "description"); ContainsIptcValue(iptcValues, IptcTag.CaptionWriter, "description writer"); ContainsIptcValue(iptcValues, IptcTag.Headline, "headline"); @@ -44,6 +45,27 @@ namespace SixLabors.ImageSharp.Tests.Metadata.Profiles.IPTC } } + [Fact] + public void IptcProfile_ToAndFromByteArray_Works() + { + // arrange + var profile = new IptcProfile(); + var expectedCaptionWriter = "unittest"; + var expectedCaption = "test"; + profile.SetValue(IptcTag.CaptionWriter, expectedCaptionWriter); + profile.SetValue(IptcTag.Caption, expectedCaption); + + // act + profile.UpdateData(); + byte[] profileBytes = profile.Data; + var profileFromBytes = new IptcProfile(profileBytes); + + // assert + var iptcValues = profileFromBytes.Values.ToList(); + ContainsIptcValue(iptcValues, IptcTag.CaptionWriter, expectedCaptionWriter); + ContainsIptcValue(iptcValues, IptcTag.Caption, expectedCaption); + } + [Fact] public void IptcProfile_CloneIsDeep() { @@ -79,10 +101,44 @@ namespace SixLabors.ImageSharp.Tests.Metadata.Profiles.IPTC Assert.NotEqual(iptcValue.Value, clone.Value); } + [Fact] + public void WritingImage_PreservesIptcProfile() + { + // arrange + var image = new Image(1, 1); + image.Metadata.IptcProfile = new IptcProfile(); + var expectedCaptionWriter = "unittest"; + var expectedCaption = "test"; + image.Metadata.IptcProfile.SetValue(IptcTag.CaptionWriter, expectedCaptionWriter); + image.Metadata.IptcProfile.SetValue(IptcTag.Caption, expectedCaption); + + // act + Image reloadedImage = WriteAndReadJpeg(image); + + // assert + IptcProfile actual = reloadedImage.Metadata.IptcProfile; + Assert.NotNull(actual); + var iptcValues = actual.Values.ToList(); + ContainsIptcValue(iptcValues, IptcTag.CaptionWriter, expectedCaptionWriter); + ContainsIptcValue(iptcValues, IptcTag.Caption, expectedCaption); + } + private static void ContainsIptcValue(IEnumerable values, IptcTag tag, string value) { Assert.True(values.Any(val => val.Tag == tag), $"Missing iptc tag {tag}"); Assert.True(values.Contains(new IptcValue(tag, System.Text.Encoding.UTF8.GetBytes(value))), $"expected iptc value '{value}' was not found for tag '{tag}'"); } + + private static Image WriteAndReadJpeg(Image image) + { + using (var memStream = new MemoryStream()) + { + image.SaveAsJpeg(memStream); + image.Dispose(); + + memStream.Position = 0; + return Image.Load(memStream); + } + } } } From 07eda44d28cc29a6a7f756b79fce5aac6765efae Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Wed, 15 Apr 2020 15:00:46 +0200 Subject: [PATCH 05/15] Add IPTC specification --- .../Metadata/Profiles/IPTC/IIMV4.2_IPTC.pdf | Bin 0 -> 364258 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/ImageSharp/Metadata/Profiles/IPTC/IIMV4.2_IPTC.pdf diff --git a/src/ImageSharp/Metadata/Profiles/IPTC/IIMV4.2_IPTC.pdf b/src/ImageSharp/Metadata/Profiles/IPTC/IIMV4.2_IPTC.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b00355181c0ed5b4b4fbf4bf740e03ac7734c28a GIT binary patch literal 364258 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⋘Z|$@aAK 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

gN2y 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

gAovIisJGB5cD|12Fo2TW-dn*9nb98KsUI@!+3 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%0DjI&L-n~Gb+_*2x6Sr)Z8t=>H9ADStB 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%0DKr3c|_6 z%*4s$kD(?e?uHq))(9tnDZ;|i4#K=u-^>iKG=nhf3aId^prjE6%ZB$ivWH*n4$QXlo;B~ zTvSsA_FHq9e-LJ*lM_l52y}II<#FZbu}50~K_Vg|Kwdr|A0IcS2DhWTos)?hx1A%) z4xV)Gm z@$drw1(1r$zX!9m{UxLs{C6;vGur0+MVY~Y2pfbgM$R~5S_J(P4)qf~{?tuO0S1Ww zUjbp*_8S%d3gz|#>^t#)&_oQwaZ!v9hNZc?3`V3u`FQzwxp~3dAb~r)BBFf4q5=Y( zynLd(ykfw=)ck|4-*HG|Tskl!@dpkNn44D!gXRuMSQNxBDggQ!$4@o?g5w_p`G3@t z-v<5nx_`m*y#;&p9eaBls3aV1Z))NMP?v$Jm{=pw01yaZ-rj%)=-Q*req7Yg)&Go1 zMMYG`9`1b3CIuO&v$Lg{sEG)O&&1T6ms=2SD$ETQ;T7N(<_DQ@^TH7VCj4-?2){7@ zceH+nP8*O;9KsOSsATYy@J4s~GT)qCXlqukU2(WP|uiqvt)5wE4?5{L$NU zaUp7BVrKzicH=ffn437;I59&p<^TTpcUSo5*1q@luN^z@tl1wj=Kn#Lfq%jAoz}nT z$*)^I?+^TZ(%GZ`g6Euke`eVa!h9bE7!J#rxLBG2ByDUk!2$m-xc{EltrTXm`wPA@r}*amlegs@NbxS>IQ_yk+!DOxn|>W?I_oS05|h2_^#I z6MRcmDCU108e}fGubn7T2LF&r6Lv9+hV<22(;K7jWtgI-WY~yQPyp_Gysw4>p1k6T z)r?S)=^hQx7~&zV8qqh)7ZA`0mY&VN1-f8c~l$`dJ6|ae{_|xdP(}}}@s@mK~R|D^-6XzW6o;b95)A_=HW-Cd- z+iQ~7PD;G`RGJ-$3}G%8Q~j3Y-r%PC<$T2KwUcUx`M%abb!{+KZ*-SXg;(;zKud){ zLoN7q(%|Kx0HQMG0V)Cpcq^RCEG(dqngGcDwUdM0{i4sRvk29!xI6V>vW6xu2g?%a z=q^4fr#!|^prwG;ja^;khB@{Wmc}Yi= z!P5n88~^rkjT_iCd)RGSHm`bO`)G$3pUJIo+}@_TdE#wr`S?XwKp8|Uey2=Y8FKTB z{hrG)cguw}DwV=tlItg1^dHJobrZC$qnOyarq$Wj&JiF0R7WGsEa8|%4FJRkh5kz4 zsvu(^29p%v2ZQ+qVAA|DAVDxlSXNMkA1nj|Vbt1^AeazTOhi_S4=ltdAS?-k!34pQ zQv5J}X=z?zUTGC#sb*#rvcsH%kvh!Y6nDvW&b#OJYn#QF zk8_N-zJ547+fRzGJEMR^EKeLcv&*tyY+5|3G~Z>*I=>AWZFu@{9AIX{O>lH zy=iWg?Z_3)7ocJ8@?T@jsY~tlX>Gi|){YR=b5TxCB}n$X%HQYOsCpSq(0$k7-MxiA zJMFbtY3Iq}sb!Cd+Nq6iRqxO~UFbaaX=iSBrJ__q&Vdo5;+5FA%;XB#e!(UWv^Hg? zl%B1ewx69`;ypQI^!dG?g13Z+QsnOf|5@UpD+^Dx$xB)Qj?deXnU@RLA0_*Gzxr6k>n5a;82bztYMzY4|Ms z7VRsXn`?U|FT7Hl)U0o(>pNK&$!VG|7;L^+tr_u+8lSCIR-?QHq^v4&OTq*bD6HWU z%_?+dUo8hpuo`?)MNBXh-9a?&M~Y5&2wNdi)V`6Af9}Oj8s+I(k-ka-|XUWRoo_bsQxmoDo{K<2ibo)e}I;P)U0A$ zFb~#7dDaBe@@KxS-99O*xpz3jY;}6XaAGbNrD^;z{b=mnS>NY Date: Wed, 15 Apr 2020 18:07:18 +0200 Subject: [PATCH 06/15] Add padding byte when resource name length is odd --- src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs b/src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs index 023bbaac7..896f41aae 100644 --- a/src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs +++ b/src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs @@ -668,6 +668,11 @@ namespace SixLabors.ImageSharp.Formats.Jpeg { byte nameLength = blockDataSpan[2]; var nameDataSize = nameLength == 0 ? 2 : nameLength; + if (nameDataSize % 2 != 0) + { + nameDataSize++; + } + return nameDataSize; } From ed1a0631f0c83ae375865b63c0cfebe2238abe09 Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Wed, 15 Apr 2020 18:26:40 +0200 Subject: [PATCH 07/15] Add testcase for app13 marker with empty IPTC --- src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs | 9 ++++++--- .../Metadata/Profiles/IPTC/IptcProfileTests.cs | 9 +++++++++ tests/ImageSharp.Tests/TestImages.cs | 1 + .../Jpg/baseline/iptc-psAPP13-wIPTCempty.jpg | Bin 0 -> 18329 bytes 4 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 tests/Images/Input/Jpg/baseline/iptc-psAPP13-wIPTCempty.jpg diff --git a/src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs b/src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs index 896f41aae..93cdd18c3 100644 --- a/src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs +++ b/src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs @@ -644,9 +644,12 @@ namespace SixLabors.ImageSharp.Formats.Jpeg { var resourceBlockNameLength = ReadImageResourceNameLength(blockDataSpan); var resourceDataSize = ReadResourceDataLength(blockDataSpan, resourceBlockNameLength); - this.isIptc = true; - this.iptcData = blockDataSpan.Slice(2 + resourceBlockNameLength + 4, resourceDataSize).ToArray(); - break; + if (resourceDataSize > 0) + { + this.isIptc = true; + this.iptcData = blockDataSpan.Slice(2 + resourceBlockNameLength + 4, resourceDataSize).ToArray(); + break; + } } else { diff --git a/tests/ImageSharp.Tests/Metadata/Profiles/IPTC/IptcProfileTests.cs b/tests/ImageSharp.Tests/Metadata/Profiles/IPTC/IptcProfileTests.cs index 40dd76836..914690102 100644 --- a/tests/ImageSharp.Tests/Metadata/Profiles/IPTC/IptcProfileTests.cs +++ b/tests/ImageSharp.Tests/Metadata/Profiles/IPTC/IptcProfileTests.cs @@ -45,6 +45,15 @@ namespace SixLabors.ImageSharp.Tests.Metadata.Profiles.IPTC } } + [Theory] + [WithFile(TestImages.Jpeg.Baseline.App13WithEmptyIptc, PixelTypes.Rgba32)] + public void ReadApp13_WithEmptyIptc_Works(TestImageProvider provider) + where TPixel : unmanaged, IPixel + { + using Image image = provider.GetImage(JpegDecoder); + Assert.Null(image.Metadata.IptcProfile); + } + [Fact] public void IptcProfile_ToAndFromByteArray_Works() { diff --git a/tests/ImageSharp.Tests/TestImages.cs b/tests/ImageSharp.Tests/TestImages.cs index d006c6682..65d975257 100644 --- a/tests/ImageSharp.Tests/TestImages.cs +++ b/tests/ImageSharp.Tests/TestImages.cs @@ -163,6 +163,7 @@ namespace SixLabors.ImageSharp.Tests public const string Testorig12bit = "Jpg/baseline/testorig12.jpg"; public const string YcckSubsample1222 = "Jpg/baseline/ycck-subsample-1222.jpg"; public const string Iptc = "Jpg/baseline/iptc.jpg"; + public const string App13WithEmptyIptc = "Jpg/baseline/iptc-psAPP13-wIPTCempty.jpg"; public static readonly string[] All = { diff --git a/tests/Images/Input/Jpg/baseline/iptc-psAPP13-wIPTCempty.jpg b/tests/Images/Input/Jpg/baseline/iptc-psAPP13-wIPTCempty.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d60013dcd990b5cf53d842d94e2d15f2a296c288 GIT binary patch literal 18329 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 Date: Wed, 15 Apr 2020 20:37:11 +0200 Subject: [PATCH 08/15] Some IPTC tags can now be added multiple times, some are restricted from doing so --- .../Metadata/Profiles/IPTC/IptcProfile.cs | 61 +++++++++- .../Metadata/Profiles/IPTC/IptcTag.cs | 107 +++++++++--------- .../Profiles/IPTC/IptcProfileTests.cs | 89 ++++++++++++++- 3 files changed, 197 insertions(+), 60 deletions(-) diff --git a/src/ImageSharp/Metadata/Profiles/IPTC/IptcProfile.cs b/src/ImageSharp/Metadata/Profiles/IPTC/IptcProfile.cs index 57704949c..119c6f2b5 100644 --- a/src/ImageSharp/Metadata/Profiles/IPTC/IptcProfile.cs +++ b/src/ImageSharp/Metadata/Profiles/IPTC/IptcProfile.cs @@ -34,6 +34,7 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc public IptcProfile(byte[] data) { this.Data = data; + this.Initialize(); } private IptcProfile(IptcProfile other) @@ -99,7 +100,7 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc /// Removes the value with the specified tag. ///

/// The tag of the iptc value. - /// True when the value was fount and removed. + /// True when the value was found and removed. public bool RemoveValue(IptcTag tag) { this.Initialize(); @@ -140,13 +141,16 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc { Guard.NotNull(encoding, nameof(encoding)); - foreach (IptcValue iptcValue in this.Values) + if (!this.IsRepeatable(tag)) { - if (iptcValue.Tag == tag) + foreach (IptcValue iptcValue in this.Values) { - iptcValue.Encoding = encoding; - iptcValue.Value = value; - return; + if (iptcValue.Tag == tag) + { + iptcValue.Encoding = encoding; + iptcValue.Value = value; + return; + } } } @@ -228,5 +232,50 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc i += count; } } + + private bool IsRepeatable(IptcTag tag) + { + switch (tag) + { + case IptcTag.RecordVersion: + case IptcTag.ObjectType: + case IptcTag.Name: + case IptcTag.EditStatus: + case IptcTag.EditorialUpdate: + case IptcTag.Urgency: + case IptcTag.Category: + case IptcTag.FixtureIdentifier: + case IptcTag.ReleaseDate: + case IptcTag.ReleaseTime: + case IptcTag.ExpirationDate: + case IptcTag.ExpirationTime: + case IptcTag.SpecialInstructions: + case IptcTag.ActionAdvised: + case IptcTag.CreatedDate: + case IptcTag.CreatedTime: + case IptcTag.DigitalCreationDate: + case IptcTag.DigitalCreationTime: + case IptcTag.OriginatingProgram: + case IptcTag.ProgramVersion: + case IptcTag.ObjectCycle: + case IptcTag.City: + case IptcTag.SubLocation: + case IptcTag.ProvinceState: + case IptcTag.CountryCode: + case IptcTag.Country: + case IptcTag.OriginalTransmissionReference: + case IptcTag.Headline: + case IptcTag.Credit: + case IptcTag.Source: + case IptcTag.CopyrightNotice: + case IptcTag.Caption: + case IptcTag.ImageType: + case IptcTag.ImageOrientation: + return false; + + default: + return true; + } + } } } diff --git a/src/ImageSharp/Metadata/Profiles/IPTC/IptcTag.cs b/src/ImageSharp/Metadata/Profiles/IPTC/IptcTag.cs index 3e6da0e09..cd0b62072 100644 --- a/src/ImageSharp/Metadata/Profiles/IPTC/IptcTag.cs +++ b/src/ImageSharp/Metadata/Profiles/IPTC/IptcTag.cs @@ -9,242 +9,247 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc public enum IptcTag { /// - /// Unknown + /// Unknown. /// Unknown = -1, /// - /// Record version + /// Record version, not repeatable. /// RecordVersion = 0, /// - /// Object type + /// Object type, not repeatable. /// ObjectType = 3, /// - /// Object attribute + /// Object attribute. /// ObjectAttribute = 4, /// - /// Title + /// Object Name, not repeatable. /// - Title = 5, + Name = 5, /// - /// Edit status + /// Edit status, not repeatable. /// EditStatus = 7, /// - /// Editorial update + /// Editorial update, not repeatable. /// EditorialUpdate = 8, /// - /// Priority + /// Urgency, not repeatable. /// - Priority = 10, + Urgency = 10, /// - /// Category + /// Subject Reference. + /// + SubjectReference = 12, + + /// + /// Category, not repeatable. /// Category = 15, /// - /// Supplemental categories + /// Supplemental categories. /// SupplementalCategories = 20, /// - /// Fixture identifier + /// Fixture identifier, not repeatable. /// FixtureIdentifier = 22, /// - /// Keyword + /// Keywords. /// - Keyword = 25, + Keywords = 25, /// - /// Location code + /// Location code. /// LocationCode = 26, /// - /// Location name + /// Location name. /// LocationName = 27, /// - /// Release date + /// Release date, not repeatable. /// ReleaseDate = 30, /// - /// Release time + /// Release time, not repeatable. /// ReleaseTime = 35, /// - /// Expiration date + /// Expiration date, not repeatable. /// ExpirationDate = 37, /// - /// Expiration time + /// Expiration time, not repeatable. /// ExpirationTime = 38, /// - /// Special instructions + /// Special instructions, not repeatable. /// SpecialInstructions = 40, /// - /// Action advised + /// Action advised, not repeatable. /// ActionAdvised = 42, /// - /// Reference service + /// Reference service. /// ReferenceService = 45, /// - /// Reference date + /// Reference date. /// ReferenceDate = 47, /// - /// ReferenceNumber + /// ReferenceNumber. /// ReferenceNumber = 50, /// - /// Created date + /// Created date, not repeatable. /// CreatedDate = 55, /// - /// Created time + /// Created time, not repeatable. /// CreatedTime = 60, /// - /// Digital creation date + /// Digital creation date, not repeatable. /// DigitalCreationDate = 62, /// - /// Digital creation time + /// Digital creation time, not repeatable. /// DigitalCreationTime = 63, /// - /// Originating program + /// Originating program, not repeatable. /// OriginatingProgram = 65, /// - /// Program version + /// Program version, not repeatable. /// ProgramVersion = 70, /// - /// Object cycle + /// Object cycle, not repeatable. /// ObjectCycle = 75, /// - /// Byline + /// Byline. /// Byline = 80, /// - /// Byline title + /// Byline title. /// BylineTitle = 85, /// - /// City + /// City, not repeatable. /// City = 90, /// - /// Sub location + /// Sub location, not repeatable. /// SubLocation = 92, /// - /// Province/State + /// Province/State, not repeatable. /// ProvinceState = 95, /// - /// Country code + /// Country code, not repeatable. /// CountryCode = 100, /// - /// Country + /// Country, not repeatable. /// Country = 101, /// - /// Original transmission reference + /// Original transmission reference, not repeatable. /// OriginalTransmissionReference = 103, /// - /// Headline + /// Headline, not repeatable. /// Headline = 105, /// - /// Credit + /// Credit, not repeatable. /// Credit = 110, /// - /// Source + /// Source, not repeatable. /// Source = 115, /// - /// Copyright notice + /// Copyright notice, not repeatable. /// CopyrightNotice = 116, /// - /// Contact + /// Contact. /// Contact = 118, /// - /// Caption + /// Caption, not repeatable. /// Caption = 120, /// - /// Local caption + /// Local caption. /// LocalCaption = 121, /// - /// Caption writer + /// Caption writer. /// CaptionWriter = 122, /// - /// Image type + /// Image type, not repeatable. /// ImageType = 130, /// - /// Image orientation + /// Image orientation, not repeatable. /// ImageOrientation = 131, diff --git a/tests/ImageSharp.Tests/Metadata/Profiles/IPTC/IptcProfileTests.cs b/tests/ImageSharp.Tests/Metadata/Profiles/IPTC/IptcProfileTests.cs index 914690102..f15a0992d 100644 --- a/tests/ImageSharp.Tests/Metadata/Profiles/IPTC/IptcProfileTests.cs +++ b/tests/ImageSharp.Tests/Metadata/Profiles/IPTC/IptcProfileTests.cs @@ -32,15 +32,15 @@ namespace SixLabors.ImageSharp.Tests.Metadata.Profiles.IPTC ContainsIptcValue(iptcValues, IptcTag.BylineTitle, "author title"); ContainsIptcValue(iptcValues, IptcTag.Credit, "credits"); ContainsIptcValue(iptcValues, IptcTag.Source, "source"); - ContainsIptcValue(iptcValues, IptcTag.Title, "title"); + ContainsIptcValue(iptcValues, IptcTag.Name, "title"); ContainsIptcValue(iptcValues, IptcTag.CreatedDate, "20200414"); ContainsIptcValue(iptcValues, IptcTag.City, "city"); ContainsIptcValue(iptcValues, IptcTag.SubLocation, "sublocation"); ContainsIptcValue(iptcValues, IptcTag.ProvinceState, "province-state"); ContainsIptcValue(iptcValues, IptcTag.Country, "country"); ContainsIptcValue(iptcValues, IptcTag.Category, "category"); - ContainsIptcValue(iptcValues, IptcTag.Priority, "1"); - ContainsIptcValue(iptcValues, IptcTag.Keyword, "keywords"); + ContainsIptcValue(iptcValues, IptcTag.Urgency, "1"); + ContainsIptcValue(iptcValues, IptcTag.Keywords, "keywords"); ContainsIptcValue(iptcValues, IptcTag.CopyrightNotice, "copyright"); } } @@ -132,6 +132,89 @@ namespace SixLabors.ImageSharp.Tests.Metadata.Profiles.IPTC ContainsIptcValue(iptcValues, IptcTag.Caption, expectedCaption); } + [Theory] + [InlineData(IptcTag.ObjectAttribute)] + [InlineData(IptcTag.SubjectReference)] + [InlineData(IptcTag.SupplementalCategories)] + [InlineData(IptcTag.Keywords)] + [InlineData(IptcTag.LocationCode)] + [InlineData(IptcTag.LocationName)] + [InlineData(IptcTag.ReferenceService)] + [InlineData(IptcTag.ReferenceDate)] + [InlineData(IptcTag.ReferenceNumber)] + [InlineData(IptcTag.Byline)] + [InlineData(IptcTag.BylineTitle)] + [InlineData(IptcTag.Contact)] + [InlineData(IptcTag.LocalCaption)] + [InlineData(IptcTag.CaptionWriter)] + public void IptcProfile_AddRepeatable_Works(IptcTag tag) + { + // arrange + var profile = new IptcProfile(); + var expectedValue1 = "test"; + var expectedValue2 = "another one"; + profile.SetValue(tag, expectedValue1); + + // act + profile.SetValue(tag, expectedValue2); + + // assert + var values = profile.Values.ToList(); + Assert.Equal(2, values.Count); + ContainsIptcValue(values, tag, expectedValue1); + ContainsIptcValue(values, tag, expectedValue2); + } + + [Theory] + [InlineData(IptcTag.RecordVersion)] + [InlineData(IptcTag.ObjectType)] + [InlineData(IptcTag.Name)] + [InlineData(IptcTag.EditStatus)] + [InlineData(IptcTag.EditorialUpdate)] + [InlineData(IptcTag.Urgency)] + [InlineData(IptcTag.Category)] + [InlineData(IptcTag.FixtureIdentifier)] + [InlineData(IptcTag.ReleaseDate)] + [InlineData(IptcTag.ReleaseTime)] + [InlineData(IptcTag.ExpirationDate)] + [InlineData(IptcTag.ExpirationTime)] + [InlineData(IptcTag.SpecialInstructions)] + [InlineData(IptcTag.ActionAdvised)] + [InlineData(IptcTag.CreatedDate)] + [InlineData(IptcTag.CreatedTime)] + [InlineData(IptcTag.DigitalCreationDate)] + [InlineData(IptcTag.DigitalCreationTime)] + [InlineData(IptcTag.OriginatingProgram)] + [InlineData(IptcTag.ProgramVersion)] + [InlineData(IptcTag.ObjectCycle)] + [InlineData(IptcTag.City)] + [InlineData(IptcTag.SubLocation)] + [InlineData(IptcTag.ProvinceState)] + [InlineData(IptcTag.CountryCode)] + [InlineData(IptcTag.Country)] + [InlineData(IptcTag.OriginalTransmissionReference)] + [InlineData(IptcTag.Headline)] + [InlineData(IptcTag.Credit)] + [InlineData(IptcTag.CopyrightNotice)] + [InlineData(IptcTag.Caption)] + [InlineData(IptcTag.ImageType)] + [InlineData(IptcTag.ImageOrientation)] + public void IptcProfile_AddNoneRepeatable_DoesOverrideOldValue(IptcTag tag) + { + // arrange + var profile = new IptcProfile(); + var expectedValue = "another one"; + profile.SetValue(tag, "test"); + + // act + profile.SetValue(tag, expectedValue); + + // assert + var values = profile.Values.ToList(); + Assert.Equal(1, values.Count); + ContainsIptcValue(values, tag, expectedValue); + } + private static void ContainsIptcValue(IEnumerable values, IptcTag tag, string value) { Assert.True(values.Any(val => val.Tag == tag), $"Missing iptc tag {tag}"); From 86462e55138f407cdd592096a7e5e7bb9ceec327 Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Thu, 16 Apr 2020 11:35:29 +0200 Subject: [PATCH 09/15] Throw if IPTC data exceeds limit --- src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs | 14 +++++++++++--- src/ImageSharp/Formats/Jpeg/JpegEncoderCore.cs | 9 +++++++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs b/src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs index 93cdd18c3..4000fa0f6 100644 --- a/src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs +++ b/src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs @@ -644,10 +644,11 @@ namespace SixLabors.ImageSharp.Formats.Jpeg { var resourceBlockNameLength = ReadImageResourceNameLength(blockDataSpan); var resourceDataSize = ReadResourceDataLength(blockDataSpan, resourceBlockNameLength); - if (resourceDataSize > 0) + int dataStartIdx = 2 + resourceBlockNameLength + 4; + if (resourceDataSize > 0 && blockDataSpan.Length >= dataStartIdx + resourceDataSize) { this.isIptc = true; - this.iptcData = blockDataSpan.Slice(2 + resourceBlockNameLength + 4, resourceDataSize).ToArray(); + this.iptcData = blockDataSpan.Slice(dataStartIdx, resourceDataSize).ToArray(); break; } } @@ -655,7 +656,14 @@ namespace SixLabors.ImageSharp.Formats.Jpeg { var resourceBlockNameLength = ReadImageResourceNameLength(blockDataSpan); var resourceDataSize = ReadResourceDataLength(blockDataSpan, resourceBlockNameLength); - blockDataSpan = blockDataSpan.Slice(2 + resourceBlockNameLength + 4 + resourceDataSize); + int dataStartIdx = 2 + resourceBlockNameLength + 4; + if (blockDataSpan.Length < dataStartIdx + resourceDataSize) + { + // Not enough data or the resource data size is wrong. + break; + } + + blockDataSpan = blockDataSpan.Slice(dataStartIdx + resourceDataSize); } } } diff --git a/src/ImageSharp/Formats/Jpeg/JpegEncoderCore.cs b/src/ImageSharp/Formats/Jpeg/JpegEncoderCore.cs index a3786ae1c..eed95c6b0 100644 --- a/src/ImageSharp/Formats/Jpeg/JpegEncoderCore.cs +++ b/src/ImageSharp/Formats/Jpeg/JpegEncoderCore.cs @@ -700,8 +700,12 @@ namespace SixLabors.ImageSharp.Formats.Jpeg /// Writes the IPTC metadata. /// /// The iptc metadata to write. + /// + /// Thrown if the IPTC profile size exceeds the limit of 65533 bytes. + /// private void WriteIptcProfile(IptcProfile iptcProfile) { + const int Max = 65533; if (iptcProfile is null || !iptcProfile.Values.Any()) { return; @@ -714,6 +718,11 @@ namespace SixLabors.ImageSharp.Formats.Jpeg return; } + if (data.Length > Max) + { + throw new ImageFormatException($"Iptc profile size exceeds limit of {Max} bytes"); + } + var app13Length = 2 + ProfileResolver.AdobePhotoshopApp13Marker.Length + ProfileResolver.AdobeImageResourceBlockMarker.Length + ProfileResolver.AdobeIptcMarker.Length + From 7e9d5533614ee42c2b1e53406776725cfc61526c Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Thu, 16 Apr 2020 13:21:35 +0200 Subject: [PATCH 10/15] Remove by tag now removes all entry's not just the first. Similar GetValue now returns a list of entrys instead of just one --- .../Metadata/Profiles/IPTC/IptcProfile.cs | 45 +++++++++++++---- .../Profiles/IPTC/IptcProfileTests.cs | 49 +++++++++++++++++++ 2 files changed, 84 insertions(+), 10 deletions(-) diff --git a/src/ImageSharp/Metadata/Profiles/IPTC/IptcProfile.cs b/src/ImageSharp/Metadata/Profiles/IPTC/IptcProfile.cs index 119c6f2b5..f4b4f1043 100644 --- a/src/ImageSharp/Metadata/Profiles/IPTC/IptcProfile.cs +++ b/src/ImageSharp/Metadata/Profiles/IPTC/IptcProfile.cs @@ -79,42 +79,67 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc public IptcProfile DeepClone() => new IptcProfile(this); /// - /// Returns the value with the specified tag. + /// Returns all value with the specified tag. /// /// The tag of the iptc value. - /// The value with the specified tag. - public IptcValue GetValue(IptcTag tag) + /// The values found with the specified tag. + public List GetValues(IptcTag tag) { + var values = new List(); foreach (IptcValue iptcValue in this.Values) { if (iptcValue.Tag == tag) { - return iptcValue; + values.Add(iptcValue); } } - return null; + return values; } /// - /// Removes the value with the specified tag. + /// Removes all values with the specified tag. /// - /// The tag of the iptc value. + /// The tag of the iptc value to remove. /// True when the value was found and removed. public bool RemoveValue(IptcTag tag) { this.Initialize(); - for (int i = 0; i < this.values.Count; i++) + bool removed = false; + for (int i = this.values.Count - 1; i >= 0; i--) { if (this.values[i].Tag == tag) { this.values.RemoveAt(i); - return true; + removed = true; + } + } + + return removed; + } + + /// + /// Removes values with the specified tag and value. + /// + /// The tag of the iptc value to remove. + /// The value of the iptc item to remove. + /// True when the value was found and removed. + public bool RemoveValue(IptcTag tag, string value) + { + this.Initialize(); + + bool removed = false; + for (int i = this.values.Count - 1; i >= 0; i--) + { + if (this.values[i].Tag == tag && this.values[i].Value.Equals(value)) + { + this.values.RemoveAt(i); + removed = true; } } - return false; + return removed; } /// diff --git a/tests/ImageSharp.Tests/Metadata/Profiles/IPTC/IptcProfileTests.cs b/tests/ImageSharp.Tests/Metadata/Profiles/IPTC/IptcProfileTests.cs index f15a0992d..9f8f8088d 100644 --- a/tests/ImageSharp.Tests/Metadata/Profiles/IPTC/IptcProfileTests.cs +++ b/tests/ImageSharp.Tests/Metadata/Profiles/IPTC/IptcProfileTests.cs @@ -215,6 +215,55 @@ namespace SixLabors.ImageSharp.Tests.Metadata.Profiles.IPTC ContainsIptcValue(values, tag, expectedValue); } + [Fact] + public void IptcProfile_RemoveByTag_RemovesAllEntrys() + { + // arange + var profile = new IptcProfile(); + profile.SetValue(IptcTag.Byline, "test"); + profile.SetValue(IptcTag.Byline, "test2"); + + // act + var result = profile.RemoveValue(IptcTag.Byline); + + // assert + Assert.True(result, "removed result should be true"); + Assert.Empty(profile.Values); + } + + [Fact] + public void IptcProfile_RemoveByTagAndValue_Works() + { + // arange + var profile = new IptcProfile(); + profile.SetValue(IptcTag.Byline, "test"); + profile.SetValue(IptcTag.Byline, "test2"); + + // act + var result = profile.RemoveValue(IptcTag.Byline, "test2"); + + // assert + Assert.True(result, "removed result should be true"); + ContainsIptcValue(profile.Values, IptcTag.Byline, "test"); + } + + [Fact] + public void IptcProfile_GetValue_RetrievesAllEntrys() + { + // arange + var profile = new IptcProfile(); + profile.SetValue(IptcTag.Byline, "test"); + profile.SetValue(IptcTag.Byline, "test2"); + profile.SetValue(IptcTag.Caption, "test"); + + // act + List result = profile.GetValues(IptcTag.Byline); + + // assert + Assert.NotNull(result); + Assert.Equal(2, result.Count); + } + private static void ContainsIptcValue(IEnumerable values, IptcTag tag, string value) { Assert.True(values.Any(val => val.Tag == tag), $"Missing iptc tag {tag}"); From 216708521458696498ab608da854b56b73a9dd90 Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Fri, 17 Apr 2020 13:31:24 +0200 Subject: [PATCH 11/15] Limit length of iptc values according to the spec --- .../Metadata/Profiles/IPTC/IptcProfile.cs | 77 ++++------- .../Metadata/Profiles/IPTC/IptcTag.cs | 119 ++++++++++------- .../Profiles/IPTC/IptcTagExtensions.cs | 121 ++++++++++++++++++ .../Metadata/Profiles/IPTC/IptcValue.cs | 37 +++++- .../Metadata/Profiles/IPTC/README.md | 6 +- .../Profiles/IPTC/IptcProfileTests.cs | 56 ++++++-- 6 files changed, 297 insertions(+), 119 deletions(-) create mode 100644 src/ImageSharp/Metadata/Profiles/IPTC/IptcTagExtensions.cs diff --git a/src/ImageSharp/Metadata/Profiles/IPTC/IptcProfile.cs b/src/ImageSharp/Metadata/Profiles/IPTC/IptcProfile.cs index f4b4f1043..b86f6dff2 100644 --- a/src/ImageSharp/Metadata/Profiles/IPTC/IptcProfile.cs +++ b/src/ImageSharp/Metadata/Profiles/IPTC/IptcProfile.cs @@ -37,6 +37,11 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc this.Initialize(); } + /// + /// Initializes a new instance of the class + /// by making a copy from another IPTC profile. + /// + /// The other IPTC profile, from which the clone should be made from. private IptcProfile(IptcProfile other) { Guard.NotNull(other, nameof(other)); @@ -85,16 +90,16 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc /// The values found with the specified tag. public List GetValues(IptcTag tag) { - var values = new List(); + var iptcValues = new List(); foreach (IptcValue iptcValue in this.Values) { if (iptcValue.Tag == tag) { - values.Add(iptcValue); + iptcValues.Add(iptcValue); } } - return values; + return iptcValues; } /// @@ -157,21 +162,26 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc } /// - /// Sets the value of the specified tag. + /// Sets the value for the specified tag. /// /// The tag of the iptc value. /// The encoding to use when storing the bytes. /// The value. - public void SetValue(IptcTag tag, Encoding encoding, string value) + /// + /// Indicates if length restrictions from the specification should be followed strictly. + /// Defaults to true. + /// + public void SetValue(IptcTag tag, Encoding encoding, string value, bool strict = true) { Guard.NotNull(encoding, nameof(encoding)); - if (!this.IsRepeatable(tag)) + if (!tag.IsRepeatable()) { foreach (IptcValue iptcValue in this.Values) { if (iptcValue.Tag == tag) { + iptcValue.Strict = strict; iptcValue.Encoding = encoding; iptcValue.Value = value; return; @@ -179,7 +189,7 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc } } - this.values.Add(new IptcValue(tag, encoding, value)); + this.values.Add(new IptcValue(tag, encoding, value, strict)); } /// @@ -187,7 +197,11 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc /// /// The tag of the iptc value. /// The value. - public void SetValue(IptcTag tag, string value) => this.SetValue(tag, Encoding.UTF8, value); + /// + /// Indicates if length restrictions from the specification should be followed strictly. + /// Defaults to true. + /// + public void SetValue(IptcTag tag, string value, bool strict = true) => this.SetValue(tag, Encoding.UTF8, value, strict); /// /// Updates the data of the profile. @@ -251,56 +265,11 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc if ((count > 0) && (i + count <= this.Data.Length)) { Buffer.BlockCopy(this.Data, i, iptcData, 0, count); - this.values.Add(new IptcValue(tag, iptcData)); + this.values.Add(new IptcValue(tag, iptcData, false)); } i += count; } } - - private bool IsRepeatable(IptcTag tag) - { - switch (tag) - { - case IptcTag.RecordVersion: - case IptcTag.ObjectType: - case IptcTag.Name: - case IptcTag.EditStatus: - case IptcTag.EditorialUpdate: - case IptcTag.Urgency: - case IptcTag.Category: - case IptcTag.FixtureIdentifier: - case IptcTag.ReleaseDate: - case IptcTag.ReleaseTime: - case IptcTag.ExpirationDate: - case IptcTag.ExpirationTime: - case IptcTag.SpecialInstructions: - case IptcTag.ActionAdvised: - case IptcTag.CreatedDate: - case IptcTag.CreatedTime: - case IptcTag.DigitalCreationDate: - case IptcTag.DigitalCreationTime: - case IptcTag.OriginatingProgram: - case IptcTag.ProgramVersion: - case IptcTag.ObjectCycle: - case IptcTag.City: - case IptcTag.SubLocation: - case IptcTag.ProvinceState: - case IptcTag.CountryCode: - case IptcTag.Country: - case IptcTag.OriginalTransmissionReference: - case IptcTag.Headline: - case IptcTag.Credit: - case IptcTag.Source: - case IptcTag.CopyrightNotice: - case IptcTag.Caption: - case IptcTag.ImageType: - case IptcTag.ImageOrientation: - return false; - - default: - return true; - } - } } } diff --git a/src/ImageSharp/Metadata/Profiles/IPTC/IptcTag.cs b/src/ImageSharp/Metadata/Profiles/IPTC/IptcTag.cs index cd0b62072..135c41e51 100644 --- a/src/ImageSharp/Metadata/Profiles/IPTC/IptcTag.cs +++ b/src/ImageSharp/Metadata/Profiles/IPTC/IptcTag.cs @@ -4,7 +4,7 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc { /// - /// All iptc tags. + /// All iptc tags relevant for images. /// public enum IptcTag { @@ -14,222 +14,245 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc Unknown = -1, /// - /// Record version, not repeatable. + /// Record version identifying the version of the Information Interchange Model. + /// Not repeatable. Max length is 2. /// RecordVersion = 0, /// - /// Object type, not repeatable. + /// Object type, not repeatable. Max Length is 67. /// ObjectType = 3, /// - /// Object attribute. + /// Object attribute. Max length is 68. /// ObjectAttribute = 4, /// - /// Object Name, not repeatable. + /// Object Name, not repeatable. Max length is 64. /// Name = 5, /// - /// Edit status, not repeatable. + /// Edit status, not repeatable. Max length is 64. /// EditStatus = 7, /// - /// Editorial update, not repeatable. + /// Editorial update, not repeatable. Max length is 2. /// EditorialUpdate = 8, /// - /// Urgency, not repeatable. + /// Urgency, not repeatable. Max length is 2. /// Urgency = 10, /// - /// Subject Reference. + /// Subject Reference. Max length is 236. /// SubjectReference = 12, /// - /// Category, not repeatable. + /// Category, not repeatable. Max length is 3. /// Category = 15, /// - /// Supplemental categories. + /// Supplemental categories. Max length is 32. /// SupplementalCategories = 20, /// - /// Fixture identifier, not repeatable. + /// Fixture identifier, not repeatable. Max length is 32. /// FixtureIdentifier = 22, /// - /// Keywords. + /// Keywords. Max length is 64. /// Keywords = 25, /// - /// Location code. + /// Location code. Max length is 3. /// LocationCode = 26, /// - /// Location name. + /// Location name. Max length is 64. /// LocationName = 27, /// - /// Release date, not repeatable. + /// Release date. Format should be CCYYMMDD, + /// e.g. "19890317" indicates data for release on 17 March 1989. + /// Not repeatable, max length is 8. /// ReleaseDate = 30, /// - /// Release time, not repeatable. + /// Release time. Format should be HHMMSS±HHMM, + /// e.g. "090000-0500" indicates object for use after 0900 in + /// New York (five hours behind UTC) + /// Not repeatable, max length is 11. /// ReleaseTime = 35, /// - /// Expiration date, not repeatable. + /// Expiration date. Format should be CCYYMMDD, + /// e.g. "19890317" indicates data for release on 17 March 1989. + /// Not repeatable, max length is 8. /// ExpirationDate = 37, /// - /// Expiration time, not repeatable. + /// Expiration time. Format should be HHMMSS±HHMM, + /// e.g. "090000-0500" indicates object for use after 0900 in + /// New York (five hours behind UTC) + /// Not repeatable, max length is 11. /// ExpirationTime = 38, /// - /// Special instructions, not repeatable. + /// Special instructions, not repeatable. Max length is 256. /// SpecialInstructions = 40, /// - /// Action advised, not repeatable. + /// Action advised, not repeatable. Max length is 2. /// ActionAdvised = 42, /// - /// Reference service. + /// Reference service. Max length is 10. /// ReferenceService = 45, /// - /// Reference date. + /// Reference date. Format should be CCYYMMDD, + /// e.g. "19890317" indicates data for release on 17 March 1989. + /// Not repeatable, max length is 8. /// ReferenceDate = 47, /// - /// ReferenceNumber. + /// ReferenceNumber. Max length is 8. /// ReferenceNumber = 50, /// - /// Created date, not repeatable. + /// Created date. Format should be CCYYMMDD, + /// e.g. "19890317" indicates data for release on 17 March 1989. + /// Not repeatable, max length is 8. /// CreatedDate = 55, /// - /// Created time, not repeatable. + /// Created time. Format should be HHMMSS±HHMM, + /// e.g. "090000-0500" indicates object for use after 0900 in + /// New York (five hours behind UTC) + /// Not repeatable, max length is 11. /// CreatedTime = 60, /// - /// Digital creation date, not repeatable. + /// Digital creation date. Format should be CCYYMMDD, + /// e.g. "19890317" indicates data for release on 17 March 1989. + /// Not repeatable, max length is 8. /// DigitalCreationDate = 62, /// - /// Digital creation time, not repeatable. + /// Digital creation time. Format should be HHMMSS±HHMM, + /// e.g. "090000-0500" indicates object for use after 0900 in + /// New York (five hours behind UTC) + /// Not repeatable, max length is 11. /// DigitalCreationTime = 63, /// - /// Originating program, not repeatable. + /// Originating program, not repeatable. Max length is 32. /// OriginatingProgram = 65, /// - /// Program version, not repeatable. + /// Program version, not repeatable. Max length is 10. /// ProgramVersion = 70, /// - /// Object cycle, not repeatable. + /// Object cycle, not repeatable. Max length is 1. /// ObjectCycle = 75, /// - /// Byline. + /// Byline. Max length is 32. /// Byline = 80, /// - /// Byline title. + /// Byline title. Max length is 32. /// BylineTitle = 85, /// - /// City, not repeatable. + /// City, not repeatable. Max length is 32. /// City = 90, /// - /// Sub location, not repeatable. + /// Sub location, not repeatable. Max length is 32. /// SubLocation = 92, /// - /// Province/State, not repeatable. + /// Province/State, not repeatable. Max length is 32. /// ProvinceState = 95, /// - /// Country code, not repeatable. + /// Country code, not repeatable. Max length is 3. /// CountryCode = 100, /// - /// Country, not repeatable. + /// Country, not repeatable. Max length is 64. /// Country = 101, /// - /// Original transmission reference, not repeatable. + /// Original transmission reference, not repeatable. Max length is 32. /// OriginalTransmissionReference = 103, /// - /// Headline, not repeatable. + /// Headline, not repeatable. Max length is 256. /// Headline = 105, /// - /// Credit, not repeatable. + /// Credit, not repeatable. Max length is 32. /// Credit = 110, /// - /// Source, not repeatable. + /// Source, not repeatable. Max length is 32. /// Source = 115, /// - /// Copyright notice, not repeatable. + /// Copyright notice, not repeatable. Max length is 128. /// CopyrightNotice = 116, /// - /// Contact. + /// Contact. Max length 128. /// Contact = 118, /// - /// Caption, not repeatable. + /// Caption, not repeatable. Max length is 2000. /// Caption = 120, @@ -239,17 +262,17 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc LocalCaption = 121, /// - /// Caption writer. + /// Caption writer. Max length is 32. /// CaptionWriter = 122, /// - /// Image type, not repeatable. + /// Image type, not repeatable. Max length is 2. /// ImageType = 130, /// - /// Image orientation, not repeatable. + /// Image orientation, not repeatable. Max length is 1. /// ImageOrientation = 131, diff --git a/src/ImageSharp/Metadata/Profiles/IPTC/IptcTagExtensions.cs b/src/ImageSharp/Metadata/Profiles/IPTC/IptcTagExtensions.cs new file mode 100644 index 000000000..88d463767 --- /dev/null +++ b/src/ImageSharp/Metadata/Profiles/IPTC/IptcTagExtensions.cs @@ -0,0 +1,121 @@ +// Copyright (c) Six Labors and contributors. +// Licensed under the Apache License, Version 2.0. + +namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc +{ + /// + /// Extension methods for IPTC tags. + /// + public static class IptcTagExtensions + { + /// + /// Maximum length of the IPTC value with the given tag according to the specification. + /// + /// The tag to check the max length for. + /// The maximum length. + public static int MaxLength(this IptcTag tag) + { + return tag switch + { + IptcTag.RecordVersion => 2, + IptcTag.ObjectType => 67, + IptcTag.ObjectAttribute => 68, + IptcTag.Name => 64, + IptcTag.EditStatus => 64, + IptcTag.EditorialUpdate => 2, + IptcTag.Urgency => 1, + IptcTag.SubjectReference => 236, + IptcTag.Category => 3, + IptcTag.SupplementalCategories => 32, + IptcTag.FixtureIdentifier => 32, + IptcTag.Keywords => 64, + IptcTag.LocationCode => 3, + IptcTag.LocationName => 64, + IptcTag.ReleaseDate => 8, + IptcTag.ReleaseTime => 11, + IptcTag.ExpirationDate => 8, + IptcTag.ExpirationTime => 11, + IptcTag.SpecialInstructions => 256, + IptcTag.ActionAdvised => 2, + IptcTag.ReferenceService => 10, + IptcTag.ReferenceDate => 8, + IptcTag.ReferenceNumber => 8, + IptcTag.CreatedDate => 8, + IptcTag.CreatedTime => 11, + IptcTag.DigitalCreationDate => 8, + IptcTag.DigitalCreationTime => 11, + IptcTag.OriginatingProgram => 32, + IptcTag.ProgramVersion => 10, + IptcTag.ObjectCycle => 1, + IptcTag.Byline => 32, + IptcTag.BylineTitle => 32, + IptcTag.City => 32, + IptcTag.SubLocation => 32, + IptcTag.ProvinceState => 32, + IptcTag.CountryCode => 3, + IptcTag.Country => 64, + IptcTag.OriginalTransmissionReference => 32, + IptcTag.Headline => 256, + IptcTag.Credit => 32, + IptcTag.Source => 32, + IptcTag.CopyrightNotice => 128, + IptcTag.Contact => 128, + IptcTag.Caption => 2000, + IptcTag.CaptionWriter => 32, + IptcTag.ImageType => 2, + IptcTag.ImageOrientation => 1, + _ => 256 + }; + } + + /// + /// Determines if the given tag can be repeated according to the specification. + /// + /// The tag to check. + /// True, if the tag can occur multiple times. + public static bool IsRepeatable(this IptcTag tag) + { + switch (tag) + { + case IptcTag.RecordVersion: + case IptcTag.ObjectType: + case IptcTag.Name: + case IptcTag.EditStatus: + case IptcTag.EditorialUpdate: + case IptcTag.Urgency: + case IptcTag.Category: + case IptcTag.FixtureIdentifier: + case IptcTag.ReleaseDate: + case IptcTag.ReleaseTime: + case IptcTag.ExpirationDate: + case IptcTag.ExpirationTime: + case IptcTag.SpecialInstructions: + case IptcTag.ActionAdvised: + case IptcTag.CreatedDate: + case IptcTag.CreatedTime: + case IptcTag.DigitalCreationDate: + case IptcTag.DigitalCreationTime: + case IptcTag.OriginatingProgram: + case IptcTag.ProgramVersion: + case IptcTag.ObjectCycle: + case IptcTag.City: + case IptcTag.SubLocation: + case IptcTag.ProvinceState: + case IptcTag.CountryCode: + case IptcTag.Country: + case IptcTag.OriginalTransmissionReference: + case IptcTag.Headline: + case IptcTag.Credit: + case IptcTag.Source: + case IptcTag.CopyrightNotice: + case IptcTag.Caption: + case IptcTag.ImageType: + case IptcTag.ImageOrientation: + return false; + + default: + return true; + } + } + } +} diff --git a/src/ImageSharp/Metadata/Profiles/IPTC/IptcValue.cs b/src/ImageSharp/Metadata/Profiles/IPTC/IptcValue.cs index a5977fd27..2c2cf5995 100644 --- a/src/ImageSharp/Metadata/Profiles/IPTC/IptcValue.cs +++ b/src/ImageSharp/Metadata/Profiles/IPTC/IptcValue.cs @@ -28,24 +28,35 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc } this.Tag = other.Tag; + this.Strict = other.Strict; } - internal IptcValue(IptcTag tag, byte[] value) + internal IptcValue(IptcTag tag, byte[] value, bool strict) { Guard.NotNull(value, nameof(value)); + this.Strict = strict; this.Tag = tag; this.data = value; this.encoding = Encoding.UTF8; } - internal IptcValue(IptcTag tag, Encoding encoding, string value) + internal IptcValue(IptcTag tag, Encoding encoding, string value, bool strict) { + this.Strict = strict; this.Tag = tag; this.encoding = encoding; this.Value = value; } + internal IptcValue(IptcTag tag, string value, bool strict) + { + this.Strict = strict; + this.Tag = tag; + this.encoding = Encoding.UTF8; + this.Value = value; + } + /// /// Gets or sets the encoding to use for the Value. /// @@ -66,6 +77,12 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc /// public IptcTag Tag { get; } + /// + /// Gets or sets a value indicating whether to be enforce value length restrictions according + /// to the specification. + /// + public bool Strict { get; set; } + /// /// Gets or sets the value. /// @@ -76,11 +93,23 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc { if (string.IsNullOrEmpty(value)) { - this.data = new byte[0]; + this.data = Array.Empty(); } else { - this.data = this.encoding.GetBytes(value); + int maxLength = this.Tag.MaxLength(); + byte[] valueBytes; + if (this.Strict && value.Length > maxLength) + { + var cappedValue = value.Substring(0, maxLength); + valueBytes = this.encoding.GetBytes(cappedValue); + } + else + { + valueBytes = this.encoding.GetBytes(value); + } + + this.data = valueBytes; } } } diff --git a/src/ImageSharp/Metadata/Profiles/IPTC/README.md b/src/ImageSharp/Metadata/Profiles/IPTC/README.md index 0b0efc967..1217ca0c7 100644 --- a/src/ImageSharp/Metadata/Profiles/IPTC/README.md +++ b/src/ImageSharp/Metadata/Profiles/IPTC/README.md @@ -1,9 +1,11 @@ IPTC source code is from [Magick.NET](https://github.com/dlemstra/Magick.NET) -Information about IPTC can be found here in the folowing sources: +Information about IPTC can be found here in the following sources: - [metacpan.org, APP13-segment](https://metacpan.org/pod/Image::MetaData::JPEG::Structures#Structure-of-a-Photoshop-style-APP13-segment) - [iptc.org](https://www.iptc.org/std/photometadata/documentation/userguide/) -- [Adobe File Formats Specification](http://oldschoolprg.x10.mx/downloads/ps6ffspecsv2.pdf) \ No newline at end of file +- [Adobe File Formats Specification](http://oldschoolprg.x10.mx/downloads/ps6ffspecsv2.pdf) + +- [Tag Overview](https://exiftool.org/TagNames/IPTC.html) \ No newline at end of file diff --git a/tests/ImageSharp.Tests/Metadata/Profiles/IPTC/IptcProfileTests.cs b/tests/ImageSharp.Tests/Metadata/Profiles/IPTC/IptcProfileTests.cs index 9f8f8088d..321c7fe5c 100644 --- a/tests/ImageSharp.Tests/Metadata/Profiles/IPTC/IptcProfileTests.cs +++ b/tests/ImageSharp.Tests/Metadata/Profiles/IPTC/IptcProfileTests.cs @@ -1,6 +1,7 @@ // Copyright (c) Six Labors and contributors. // Licensed under the Apache License, Version 2.0. +using System; using System.Collections.Generic; using System.IO; using System.Linq; @@ -15,6 +16,31 @@ namespace SixLabors.ImageSharp.Tests.Metadata.Profiles.IPTC { private static JpegDecoder JpegDecoder => new JpegDecoder() { IgnoreMetadata = false }; + public static IEnumerable allIptcTags() + { + foreach (object tag in Enum.GetValues(typeof(IptcTag))) + { + yield return new object[] { tag }; + } + } + + [Theory] + [MemberData("allIptcTags")] + public void IptcProfile_SetValue_WithStrictOption_Works(IptcTag tag) + { + // arrange + var profile = new IptcProfile(); + var value = new string('s', tag.MaxLength() + 1); + var expectedLength = tag.MaxLength(); + + // act + profile.SetValue(tag, value); + + // assert + IptcValue actual = profile.GetValues(tag).First(); + Assert.Equal(expectedLength, actual.Value.Length); + } + [Theory] [WithFile(TestImages.Jpeg.Baseline.Iptc, PixelTypes.Rgba32)] public void ReadIptcMetadata_Works(TestImageProvider provider) @@ -91,16 +117,17 @@ namespace SixLabors.ImageSharp.Tests.Metadata.Profiles.IPTC // assert Assert.Equal(2, clone.Values.Count()); - ContainsIptcValue(clone.Values, IptcTag.CaptionWriter, captionWriter); - ContainsIptcValue(clone.Values, IptcTag.Caption, "changed"); - ContainsIptcValue(profile.Values, IptcTag.Caption, caption); + var cloneValues = clone.Values.ToList(); + ContainsIptcValue(cloneValues, IptcTag.CaptionWriter, captionWriter); + ContainsIptcValue(cloneValues, IptcTag.Caption, "changed"); + ContainsIptcValue(profile.Values.ToList(), IptcTag.Caption, caption); } [Fact] public void IptcValue_CloneIsDeep() { // arrange - var iptcValue = new IptcValue(IptcTag.Caption, System.Text.Encoding.UTF8, "test"); + var iptcValue = new IptcValue(IptcTag.Caption, System.Text.Encoding.UTF8, "test", true); // act IptcValue clone = iptcValue.DeepClone(); @@ -132,6 +159,13 @@ namespace SixLabors.ImageSharp.Tests.Metadata.Profiles.IPTC ContainsIptcValue(iptcValues, IptcTag.Caption, expectedCaption); } + [Fact] + public void IptcProfile_SetNewValue_RespectsMaxLength() + { + // arrange + var profile = new IptcProfile(); + } + [Theory] [InlineData(IptcTag.ObjectAttribute)] [InlineData(IptcTag.SubjectReference)] @@ -153,10 +187,10 @@ namespace SixLabors.ImageSharp.Tests.Metadata.Profiles.IPTC var profile = new IptcProfile(); var expectedValue1 = "test"; var expectedValue2 = "another one"; - profile.SetValue(tag, expectedValue1); + profile.SetValue(tag, expectedValue1, false); // act - profile.SetValue(tag, expectedValue2); + profile.SetValue(tag, expectedValue2, false); // assert var values = profile.Values.ToList(); @@ -204,10 +238,10 @@ namespace SixLabors.ImageSharp.Tests.Metadata.Profiles.IPTC // arrange var profile = new IptcProfile(); var expectedValue = "another one"; - profile.SetValue(tag, "test"); + profile.SetValue(tag, "test", false); // act - profile.SetValue(tag, expectedValue); + profile.SetValue(tag, expectedValue, false); // assert var values = profile.Values.ToList(); @@ -244,7 +278,7 @@ namespace SixLabors.ImageSharp.Tests.Metadata.Profiles.IPTC // assert Assert.True(result, "removed result should be true"); - ContainsIptcValue(profile.Values, IptcTag.Byline, "test"); + ContainsIptcValue(profile.Values.ToList(), IptcTag.Byline, "test"); } [Fact] @@ -264,10 +298,10 @@ namespace SixLabors.ImageSharp.Tests.Metadata.Profiles.IPTC Assert.Equal(2, result.Count); } - private static void ContainsIptcValue(IEnumerable values, IptcTag tag, string value) + private static void ContainsIptcValue(List values, IptcTag tag, string value) { Assert.True(values.Any(val => val.Tag == tag), $"Missing iptc tag {tag}"); - Assert.True(values.Contains(new IptcValue(tag, System.Text.Encoding.UTF8.GetBytes(value))), $"expected iptc value '{value}' was not found for tag '{tag}'"); + Assert.True(values.Contains(new IptcValue(tag, System.Text.Encoding.UTF8.GetBytes(value), false)), $"expected iptc value '{value}' was not found for tag '{tag}'"); } private static Image WriteAndReadJpeg(Image image) From f1a99e70e0e2ff9e7a64095f3742305502372dba Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Sat, 18 Apr 2020 18:03:01 +0200 Subject: [PATCH 12/15] Add SetDateTimeValue which makes sure the formatting will be as specified in the spec --- .../Metadata/Profiles/IPTC/IptcProfile.cs | 22 ++++++++++ .../Metadata/Profiles/IPTC/IptcTag.cs | 22 ++++------ .../Profiles/IPTC/IptcTagExtensions.cs | 43 ++++++++++++++++++- .../Metadata/Profiles/IPTC/IptcValue.cs | 6 +++ .../Profiles/IPTC/IptcProfileTests.cs | 43 ++++++++++++++++++- 5 files changed, 120 insertions(+), 16 deletions(-) diff --git a/src/ImageSharp/Metadata/Profiles/IPTC/IptcProfile.cs b/src/ImageSharp/Metadata/Profiles/IPTC/IptcProfile.cs index b86f6dff2..cd3c8eb93 100644 --- a/src/ImageSharp/Metadata/Profiles/IPTC/IptcProfile.cs +++ b/src/ImageSharp/Metadata/Profiles/IPTC/IptcProfile.cs @@ -174,6 +174,7 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc public void SetValue(IptcTag tag, Encoding encoding, string value, bool strict = true) { Guard.NotNull(encoding, nameof(encoding)); + Guard.NotNull(value, nameof(value)); if (!tag.IsRepeatable()) { @@ -192,6 +193,27 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc this.values.Add(new IptcValue(tag, encoding, value, strict)); } + /// + /// Makes sure the datetime is formatted according to the iptc specification. + /// A date will be formatted as CCYYMMDD. + /// A time value will be formatted as HHMMSS±HHMM. + /// + /// The tag of the iptc value. + /// The datetime. + public void SetDateTimeValue(IptcTag tag, DateTime dateTime) + { + if (!tag.IsDate() && !tag.IsTime()) + { + throw new ArgumentException("iptc tag is not a time or date type"); + } + + var formattedDate = tag.IsDate() + ? dateTime.ToString("yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture) + : dateTime.ToString("HHmmsszzzz", System.Globalization.CultureInfo.InvariantCulture).Replace(":", string.Empty); + + this.SetValue(tag, Encoding.UTF8, formattedDate); + } + /// /// Sets the value of the specified tag. /// diff --git a/src/ImageSharp/Metadata/Profiles/IPTC/IptcTag.cs b/src/ImageSharp/Metadata/Profiles/IPTC/IptcTag.cs index 135c41e51..62f74386e 100644 --- a/src/ImageSharp/Metadata/Profiles/IPTC/IptcTag.cs +++ b/src/ImageSharp/Metadata/Profiles/IPTC/IptcTag.cs @@ -86,30 +86,28 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc /// /// Release date. Format should be CCYYMMDD, - /// e.g. "19890317" indicates data for release on 17 March 1989. + /// e.g. "19890317" for the 17 March 1989. /// Not repeatable, max length is 8. /// ReleaseDate = 30, /// /// Release time. Format should be HHMMSS±HHMM, - /// e.g. "090000-0500" indicates object for use after 0900 in - /// New York (five hours behind UTC) + /// e.g. "090000-0500" for 9 o'clock New York time (five hours behind UTC). /// Not repeatable, max length is 11. /// ReleaseTime = 35, /// /// Expiration date. Format should be CCYYMMDD, - /// e.g. "19890317" indicates data for release on 17 March 1989. + /// e.g. "19890317" for the 17 March 1989. /// Not repeatable, max length is 8. /// ExpirationDate = 37, /// /// Expiration time. Format should be HHMMSS±HHMM, - /// e.g. "090000-0500" indicates object for use after 0900 in - /// New York (five hours behind UTC) + /// e.g. "090000-0500" for 9 o'clock New York time (five hours behind UTC). /// Not repeatable, max length is 11. /// ExpirationTime = 38, @@ -131,7 +129,7 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc /// /// Reference date. Format should be CCYYMMDD, - /// e.g. "19890317" indicates data for release on 17 March 1989. + /// e.g. "19890317" for the 17 March 1989. /// Not repeatable, max length is 8. /// ReferenceDate = 47, @@ -143,30 +141,28 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc /// /// Created date. Format should be CCYYMMDD, - /// e.g. "19890317" indicates data for release on 17 March 1989. + /// e.g. "19890317" for the 17 March 1989. /// Not repeatable, max length is 8. /// CreatedDate = 55, /// /// Created time. Format should be HHMMSS±HHMM, - /// e.g. "090000-0500" indicates object for use after 0900 in - /// New York (five hours behind UTC) + /// e.g. "090000-0500" for 9 o'clock New York time (five hours behind UTC). /// Not repeatable, max length is 11. /// CreatedTime = 60, /// /// Digital creation date. Format should be CCYYMMDD, - /// e.g. "19890317" indicates data for release on 17 March 1989. + /// e.g. "19890317" for the 17 March 1989. /// Not repeatable, max length is 8. /// DigitalCreationDate = 62, /// /// Digital creation time. Format should be HHMMSS±HHMM, - /// e.g. "090000-0500" indicates object for use after 0900 in - /// New York (five hours behind UTC) + /// e.g. "090000-0500" for 9 o'clock New York time (five hours behind UTC). /// Not repeatable, max length is 11. /// DigitalCreationTime = 63, diff --git a/src/ImageSharp/Metadata/Profiles/IPTC/IptcTagExtensions.cs b/src/ImageSharp/Metadata/Profiles/IPTC/IptcTagExtensions.cs index 88d463767..6b39769a7 100644 --- a/src/ImageSharp/Metadata/Profiles/IPTC/IptcTagExtensions.cs +++ b/src/ImageSharp/Metadata/Profiles/IPTC/IptcTagExtensions.cs @@ -1,4 +1,4 @@ -// Copyright (c) Six Labors and contributors. +// Copyright (c) Six Labors and contributors. // Licensed under the Apache License, Version 2.0. namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc @@ -117,5 +117,46 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc return true; } } + + /// + /// Determines if the tag is a datetime tag which needs to be formatted as CCYYMMDD. + /// + /// The tag to check. + /// True, if its a datetime tag. + public static bool IsDate(this IptcTag tag) + { + switch (tag) + { + case IptcTag.CreatedDate: + case IptcTag.DigitalCreationDate: + case IptcTag.ExpirationDate: + case IptcTag.ReferenceDate: + case IptcTag.ReleaseDate: + return true; + + default: + return false; + } + } + + /// + /// Determines if the tag is a time tag which need to be formatted as HHMMSS±HHMM. + /// + /// The tag to check. + /// True, if its a time tag. + public static bool IsTime(this IptcTag tag) + { + switch (tag) + { + case IptcTag.CreatedTime: + case IptcTag.DigitalCreationTime: + case IptcTag.ExpirationTime: + case IptcTag.ReleaseTime: + return true; + + default: + return false; + } + } } } diff --git a/src/ImageSharp/Metadata/Profiles/IPTC/IptcValue.cs b/src/ImageSharp/Metadata/Profiles/IPTC/IptcValue.cs index 2c2cf5995..8e804353c 100644 --- a/src/ImageSharp/Metadata/Profiles/IPTC/IptcValue.cs +++ b/src/ImageSharp/Metadata/Profiles/IPTC/IptcValue.cs @@ -103,6 +103,12 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc { var cappedValue = value.Substring(0, maxLength); valueBytes = this.encoding.GetBytes(cappedValue); + + // It is still possible that the bytes of the string exceed the limit. + if (valueBytes.Length > maxLength) + { + throw new ArgumentException($"The iptc value exceeds the limit of {maxLength} bytes for the tag {this.Tag}"); + } } else { diff --git a/tests/ImageSharp.Tests/Metadata/Profiles/IPTC/IptcProfileTests.cs b/tests/ImageSharp.Tests/Metadata/Profiles/IPTC/IptcProfileTests.cs index 321c7fe5c..9d5db439a 100644 --- a/tests/ImageSharp.Tests/Metadata/Profiles/IPTC/IptcProfileTests.cs +++ b/tests/ImageSharp.Tests/Metadata/Profiles/IPTC/IptcProfileTests.cs @@ -16,7 +16,7 @@ namespace SixLabors.ImageSharp.Tests.Metadata.Profiles.IPTC { private static JpegDecoder JpegDecoder => new JpegDecoder() { IgnoreMetadata = false }; - public static IEnumerable allIptcTags() + public static IEnumerable AllIptcTags() { foreach (object tag in Enum.GetValues(typeof(IptcTag))) { @@ -25,7 +25,7 @@ namespace SixLabors.ImageSharp.Tests.Metadata.Profiles.IPTC } [Theory] - [MemberData("allIptcTags")] + [MemberData("AllIptcTags")] public void IptcProfile_SetValue_WithStrictOption_Works(IptcTag tag) { // arrange @@ -41,6 +41,45 @@ namespace SixLabors.ImageSharp.Tests.Metadata.Profiles.IPTC Assert.Equal(expectedLength, actual.Value.Length); } + [Theory] + [InlineData(IptcTag.DigitalCreationDate)] + [InlineData(IptcTag.ExpirationDate)] + [InlineData(IptcTag.CreatedDate)] + [InlineData(IptcTag.ReferenceDate)] + [InlineData(IptcTag.ReleaseDate)] + public void IptcProfile_SetDateValue_Works(IptcTag tag) + { + // arrange + var profile = new IptcProfile(); + var datetime = new DateTime(1994, 3, 17); + + // act + profile.SetDateTimeValue(tag, datetime); + + // assert + IptcValue actual = profile.GetValues(tag).First(); + Assert.Equal("19940317", actual.Value); + } + + [Theory] + [InlineData(IptcTag.CreatedTime)] + [InlineData(IptcTag.DigitalCreationTime)] + [InlineData(IptcTag.ExpirationTime)] + [InlineData(IptcTag.ReleaseTime)] + public void IptcProfile_SetTimeValue_Works(IptcTag tag) + { + // arrange + var profile = new IptcProfile(); + DateTime datetime = new DateTimeOffset(new DateTime(1994, 3, 17, 14, 15, 16), new TimeSpan(1, 0, 0)).DateTime; + + // act + profile.SetDateTimeValue(tag, datetime); + + // assert + IptcValue actual = profile.GetValues(tag).First(); + Assert.Equal("141516+0100", actual.Value); + } + [Theory] [WithFile(TestImages.Jpeg.Baseline.Iptc, PixelTypes.Rgba32)] public void ReadIptcMetadata_Works(TestImageProvider provider) From 4a70056a2b38c7b728c10f6b04066991bef2db7b Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Sun, 19 Apr 2020 10:30:42 +0200 Subject: [PATCH 13/15] SetDateTimeValue now uses DateTimeOffset --- src/ImageSharp/Metadata/Profiles/IPTC/IptcProfile.cs | 9 +++++---- .../Metadata/Profiles/IPTC/IptcProfileTests.cs | 9 +++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/ImageSharp/Metadata/Profiles/IPTC/IptcProfile.cs b/src/ImageSharp/Metadata/Profiles/IPTC/IptcProfile.cs index cd3c8eb93..a46d2745f 100644 --- a/src/ImageSharp/Metadata/Profiles/IPTC/IptcProfile.cs +++ b/src/ImageSharp/Metadata/Profiles/IPTC/IptcProfile.cs @@ -199,8 +199,8 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc /// A time value will be formatted as HHMMSS±HHMM. /// /// The tag of the iptc value. - /// The datetime. - public void SetDateTimeValue(IptcTag tag, DateTime dateTime) + /// The datetime. + public void SetDateTimeValue(IptcTag tag, DateTimeOffset dateTimeOffset) { if (!tag.IsDate() && !tag.IsTime()) { @@ -208,8 +208,9 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc } var formattedDate = tag.IsDate() - ? dateTime.ToString("yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture) - : dateTime.ToString("HHmmsszzzz", System.Globalization.CultureInfo.InvariantCulture).Replace(":", string.Empty); + ? dateTimeOffset.ToString("yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture) + : dateTimeOffset.ToString("HHmmsszzzz", System.Globalization.CultureInfo.InvariantCulture) + .Replace(":", string.Empty); this.SetValue(tag, Encoding.UTF8, formattedDate); } diff --git a/tests/ImageSharp.Tests/Metadata/Profiles/IPTC/IptcProfileTests.cs b/tests/ImageSharp.Tests/Metadata/Profiles/IPTC/IptcProfileTests.cs index 9d5db439a..d9f44cef9 100644 --- a/tests/ImageSharp.Tests/Metadata/Profiles/IPTC/IptcProfileTests.cs +++ b/tests/ImageSharp.Tests/Metadata/Profiles/IPTC/IptcProfileTests.cs @@ -51,7 +51,7 @@ namespace SixLabors.ImageSharp.Tests.Metadata.Profiles.IPTC { // arrange var profile = new IptcProfile(); - var datetime = new DateTime(1994, 3, 17); + var datetime = new DateTimeOffset(new DateTime(1994, 3, 17)); // act profile.SetDateTimeValue(tag, datetime); @@ -70,14 +70,15 @@ namespace SixLabors.ImageSharp.Tests.Metadata.Profiles.IPTC { // arrange var profile = new IptcProfile(); - DateTime datetime = new DateTimeOffset(new DateTime(1994, 3, 17, 14, 15, 16), new TimeSpan(1, 0, 0)).DateTime; + var dateTimeUtc = new DateTime(1994, 3, 17, 14, 15, 16, DateTimeKind.Utc); + DateTimeOffset dateTimeOffset = new DateTimeOffset(dateTimeUtc).ToOffset(TimeSpan.FromHours(2)); // act - profile.SetDateTimeValue(tag, datetime); + profile.SetDateTimeValue(tag, dateTimeOffset); // assert IptcValue actual = profile.GetValues(tag).First(); - Assert.Equal("141516+0100", actual.Value); + Assert.Equal("161516+0200", actual.Value); } [Theory] From 12c3537e562dbc2ade9d905d699f22e3e7161ff3 Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Sun, 19 Apr 2020 11:17:05 +0200 Subject: [PATCH 14/15] Use tag for examples --- .../Metadata/Profiles/IPTC/IptcProfile.cs | 7 ++- .../Metadata/Profiles/IPTC/IptcTag.cs | 58 +++++++++++++------ 2 files changed, 45 insertions(+), 20 deletions(-) diff --git a/src/ImageSharp/Metadata/Profiles/IPTC/IptcProfile.cs b/src/ImageSharp/Metadata/Profiles/IPTC/IptcProfile.cs index a46d2745f..b46eee0fd 100644 --- a/src/ImageSharp/Metadata/Profiles/IPTC/IptcProfile.cs +++ b/src/ImageSharp/Metadata/Profiles/IPTC/IptcProfile.cs @@ -195,8 +195,11 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc /// /// Makes sure the datetime is formatted according to the iptc specification. - /// A date will be formatted as CCYYMMDD. - /// A time value will be formatted as HHMMSS±HHMM. + /// + /// A date will be formatted as CCYYMMDD, e.g. "19890317" for 17 March 1989. + /// A time value will be formatted as HHMMSS±HHMM, e.g. "090000+0200" for 9 o'clock Berlin time, + /// two hours ahead of UTC. + /// /// /// The tag of the iptc value. /// The datetime. diff --git a/src/ImageSharp/Metadata/Profiles/IPTC/IptcTag.cs b/src/ImageSharp/Metadata/Profiles/IPTC/IptcTag.cs index 62f74386e..70a90aa10 100644 --- a/src/ImageSharp/Metadata/Profiles/IPTC/IptcTag.cs +++ b/src/ImageSharp/Metadata/Profiles/IPTC/IptcTag.cs @@ -85,30 +85,40 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc LocationName = 27, /// - /// Release date. Format should be CCYYMMDD, - /// e.g. "19890317" for the 17 March 1989. + /// Release date. Format should be CCYYMMDD. /// Not repeatable, max length is 8. + /// + /// A date will be formatted as CCYYMMDD, e.g. "19890317" for 17 March 1989. + /// /// ReleaseDate = 30, /// - /// Release time. Format should be HHMMSS±HHMM, - /// e.g. "090000-0500" for 9 o'clock New York time (five hours behind UTC). + /// Release time. Format should be HHMMSS±HHMM. /// Not repeatable, max length is 11. + /// + /// A time value will be formatted as HHMMSS±HHMM, e.g. "090000+0200" for 9 o'clock Berlin time, + /// two hours ahead of UTC. + /// /// ReleaseTime = 35, /// - /// Expiration date. Format should be CCYYMMDD, - /// e.g. "19890317" for the 17 March 1989. + /// Expiration date. Format should be CCYYMMDD. /// Not repeatable, max length is 8. + /// + /// A date will be formatted as CCYYMMDD, e.g. "19890317" for 17 March 1989. + /// /// ExpirationDate = 37, /// - /// Expiration time. Format should be HHMMSS±HHMM, - /// e.g. "090000-0500" for 9 o'clock New York time (five hours behind UTC). + /// Expiration time. Format should be HHMMSS±HHMM. /// Not repeatable, max length is 11. + /// + /// A time value will be formatted as HHMMSS±HHMM, e.g. "090000+0200" for 9 o'clock Berlin time, + /// two hours ahead of UTC. + /// /// ExpirationTime = 38, @@ -128,9 +138,11 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc ReferenceService = 45, /// - /// Reference date. Format should be CCYYMMDD, - /// e.g. "19890317" for the 17 March 1989. + /// Reference date. Format should be CCYYMMDD. /// Not repeatable, max length is 8. + /// + /// A date will be formatted as CCYYMMDD, e.g. "19890317" for 17 March 1989. + /// /// ReferenceDate = 47, @@ -140,30 +152,40 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc ReferenceNumber = 50, /// - /// Created date. Format should be CCYYMMDD, - /// e.g. "19890317" for the 17 March 1989. + /// Created date. Format should be CCYYMMDD. /// Not repeatable, max length is 8. + /// + /// A date will be formatted as CCYYMMDD, e.g. "19890317" for 17 March 1989. + /// /// CreatedDate = 55, /// - /// Created time. Format should be HHMMSS±HHMM, - /// e.g. "090000-0500" for 9 o'clock New York time (five hours behind UTC). + /// Created time. Format should be HHMMSS±HHMM. /// Not repeatable, max length is 11. + /// + /// A time value will be formatted as HHMMSS±HHMM, e.g. "090000+0200" for 9 o'clock Berlin time, + /// two hours ahead of UTC. + /// /// CreatedTime = 60, /// - /// Digital creation date. Format should be CCYYMMDD, - /// e.g. "19890317" for the 17 March 1989. + /// Digital creation date. Format should be CCYYMMDD. /// Not repeatable, max length is 8. + /// + /// A date will be formatted as CCYYMMDD, e.g. "19890317" for 17 March 1989. + /// /// DigitalCreationDate = 62, /// - /// Digital creation time. Format should be HHMMSS±HHMM, - /// e.g. "090000-0500" for 9 o'clock New York time (five hours behind UTC). + /// Digital creation time. Format should be HHMMSS±HHMM. /// Not repeatable, max length is 11. + /// + /// A time value will be formatted as HHMMSS±HHMM, e.g. "090000+0200" for 9 o'clock Berlin time, + /// two hours ahead of UTC. + /// /// DigitalCreationTime = 63, From 7fb1612c302da9c8a63358db666b6965faa33744 Mon Sep 17 00:00:00 2001 From: James Jackson-South Date: Mon, 20 Apr 2020 00:30:18 +0100 Subject: [PATCH 15/15] Remove allocation and clean up docs --- .../Metadata/Profiles/IPTC/IptcProfile.cs | 5 +---- .../Metadata/Profiles/IPTC/IptcTag.cs | 2 +- .../Metadata/Profiles/IPTC/IptcValue.cs | 18 ++++++++---------- 3 files changed, 10 insertions(+), 15 deletions(-) diff --git a/src/ImageSharp/Metadata/Profiles/IPTC/IptcProfile.cs b/src/ImageSharp/Metadata/Profiles/IPTC/IptcProfile.cs index b46eee0fd..9206e4377 100644 --- a/src/ImageSharp/Metadata/Profiles/IPTC/IptcProfile.cs +++ b/src/ImageSharp/Metadata/Profiles/IPTC/IptcProfile.cs @@ -10,11 +10,8 @@ using System.Text; namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc { /// - /// Class that can be used to access an Iptc profile. + /// Represents an IPTC profile providing access to the collection of values. /// - /// This source code is from the Magick.Net project: - /// https://github.com/dlemstra/Magick.NET/tree/master/src/Magick.NET/Shared/Profiles/Iptc/IptcProfile.cs - /// public sealed class IptcProfile : IDeepCloneable { private Collection values; diff --git a/src/ImageSharp/Metadata/Profiles/IPTC/IptcTag.cs b/src/ImageSharp/Metadata/Profiles/IPTC/IptcTag.cs index 70a90aa10..7258a0291 100644 --- a/src/ImageSharp/Metadata/Profiles/IPTC/IptcTag.cs +++ b/src/ImageSharp/Metadata/Profiles/IPTC/IptcTag.cs @@ -4,7 +4,7 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc { /// - /// All iptc tags relevant for images. + /// Provides enumeration of all IPTC tags relevant for images. /// public enum IptcTag { diff --git a/src/ImageSharp/Metadata/Profiles/IPTC/IptcValue.cs b/src/ImageSharp/Metadata/Profiles/IPTC/IptcValue.cs index 8e804353c..e63781012 100644 --- a/src/ImageSharp/Metadata/Profiles/IPTC/IptcValue.cs +++ b/src/ImageSharp/Metadata/Profiles/IPTC/IptcValue.cs @@ -7,11 +7,11 @@ using System.Text; namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc { /// - /// A value of the iptc profile. + /// Represents a single value of the IPTC profile. /// public sealed class IptcValue : IDeepCloneable { - private byte[] data; + private byte[] data = Array.Empty(); private Encoding encoding; internal IptcValue(IptcValue other) @@ -165,16 +165,14 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc return false; } - byte[] data = other.ToByteArray(); - - if (this.data.Length != data.Length) + if (this.data.Length != other.data.Length) { return false; } for (int i = 0; i < this.data.Length; i++) { - if (this.data[i] != data[i]) + if (this.data[i] != other.data[i]) { return false; } @@ -209,13 +207,13 @@ namespace SixLabors.ImageSharp.Metadata.Profiles.Iptc /// /// Returns a string that represents the current value with the specified encoding. /// - /// The encoding to use. + /// The encoding to use. /// A string that represents the current value with the specified encoding. - public string ToString(Encoding enc) + public string ToString(Encoding encoding) { - Guard.NotNull(enc, nameof(enc)); + Guard.NotNull(encoding, nameof(encoding)); - return enc.GetString(this.data); + return encoding.GetString(this.data); } } }