diff --git a/src/ImageSharp/Formats/Tiff/TiffDecoderMetadataCreator.cs b/src/ImageSharp/Formats/Tiff/TiffDecoderMetadataCreator.cs index f17b92882..fcb48e28b 100644 --- a/src/ImageSharp/Formats/Tiff/TiffDecoderMetadataCreator.cs +++ b/src/ImageSharp/Formats/Tiff/TiffDecoderMetadataCreator.cs @@ -28,6 +28,7 @@ internal static class TiffDecoderMetadataCreator if (!ignoreMetadata) { var tiffMetadata = imageMetaData.GetTiffMetadata(); + var framesMetadata = new List(frames.Count); for (int i = 0; i < frames.Count; i++) { ImageFrameMetadata frameMetaData = frames[i]; @@ -46,8 +47,10 @@ internal static class TiffDecoderMetadataCreator frameMetaData.IccProfile = new IccProfile(iccProfileBytes.Value); } - tiffMetadata.Frames.Add(frameMetaData.GetTiffMetadata()); + framesMetadata.Add(frameMetaData.GetTiffMetadata()); } + + tiffMetadata.Frames = framesMetadata; } return imageMetaData; diff --git a/src/ImageSharp/Formats/Tiff/TiffFrameMetadata.cs b/src/ImageSharp/Formats/Tiff/TiffFrameMetadata.cs index c0cbd7e87..4fa0ba013 100644 --- a/src/ImageSharp/Formats/Tiff/TiffFrameMetadata.cs +++ b/src/ImageSharp/Formats/Tiff/TiffFrameMetadata.cs @@ -28,6 +28,7 @@ public class TiffFrameMetadata : IDeepCloneable this.Compression = other.Compression; this.PhotometricInterpretation = other.PhotometricInterpretation; this.Predictor = other.Predictor; + this.InkSet = other.InkSet; } /// diff --git a/src/ImageSharp/Formats/Tiff/TiffMetadata.cs b/src/ImageSharp/Formats/Tiff/TiffMetadata.cs index 6f9af6c07..2a31642fe 100644 --- a/src/ImageSharp/Formats/Tiff/TiffMetadata.cs +++ b/src/ImageSharp/Formats/Tiff/TiffMetadata.cs @@ -19,7 +19,20 @@ public class TiffMetadata : IDeepCloneable /// Initializes a new instance of the class. /// /// The metadata to create an instance from. - private TiffMetadata(TiffMetadata other) => this.ByteOrder = other.ByteOrder; + private TiffMetadata(TiffMetadata other) + { + this.ByteOrder = other.ByteOrder; + this.FormatType = other.FormatType; + + var frames = new List(other.Frames.Count); + foreach (var otherFrame in other.Frames) + { + var frame = (TiffFrameMetadata)otherFrame.DeepClone(); + frames.Add(frame); + } + + this.Frames = frames; + } /// /// Gets or sets the byte order. @@ -37,7 +50,7 @@ public class TiffMetadata : IDeepCloneable /// /// The frames. /// - public IList Frames { get; set; } = new List(); + public IReadOnlyList Frames { get; set; } = Array.Empty(); /// public IDeepCloneable DeepClone() => new TiffMetadata(this);