diff --git a/src/ImageSharp/Formats/Tiff/TiffDecoderMetadataCreator.cs b/src/ImageSharp/Formats/Tiff/TiffDecoderMetadataCreator.cs index 9a495ad31..300108341 100644 --- a/src/ImageSharp/Formats/Tiff/TiffDecoderMetadataCreator.cs +++ b/src/ImageSharp/Formats/Tiff/TiffDecoderMetadataCreator.cs @@ -56,9 +56,22 @@ namespace SixLabors.ImageSharp.Formats.Tiff } } - if (coreMetadata.ExifProfile == null) + if (coreMetadata.ExifProfile == null && frame.ExifProfile != null) { - coreMetadata.ExifProfile = frame?.ExifProfile.DeepClone(); + coreMetadata.ExifProfile = frame.ExifProfile.DeepClone(); + + // Remove Tiff specific tags from the profile. + coreMetadata.ExifProfile.RemoveValue(ExifTag.ImageWidth); + coreMetadata.ExifProfile.RemoveValue(ExifTag.ImageLength); + coreMetadata.ExifProfile.RemoveValue(ExifTag.ResolutionUnit); + coreMetadata.ExifProfile.RemoveValue(ExifTag.Predictor); + coreMetadata.ExifProfile.RemoveValue(ExifTag.PlanarConfiguration); + coreMetadata.ExifProfile.RemoveValue(ExifTag.PhotometricInterpretation); + coreMetadata.ExifProfile.RemoveValue(ExifTag.BitsPerSample); + coreMetadata.ExifProfile.RemoveValue(ExifTag.ColorMap); + coreMetadata.ExifProfile.RemoveValue(ExifTag.Compression); + coreMetadata.ExifProfile.RemoveValue(ExifTag.StripOffsets); + coreMetadata.ExifProfile.RemoveValue(ExifTag.StripByteCounts); } if (coreMetadata.IptcProfile == null) diff --git a/src/ImageSharp/Formats/Tiff/TiffFrameMetadata.cs b/src/ImageSharp/Formats/Tiff/TiffFrameMetadata.cs index 119a60d92..e00fac151 100644 --- a/src/ImageSharp/Formats/Tiff/TiffFrameMetadata.cs +++ b/src/ImageSharp/Formats/Tiff/TiffFrameMetadata.cs @@ -208,25 +208,5 @@ namespace SixLabors.ImageSharp.Formats.Tiff /// public IDeepCloneable DeepClone() => new TiffFrameMetadata() { ExifProfile = this.ExifProfile.DeepClone() }; - - private static bool IsFormatTag(ExifTagValue tag) - { - switch (tag) - { - case ExifTagValue.ImageWidth: - case ExifTagValue.ImageLength: - case ExifTagValue.ResolutionUnit: - case ExifTagValue.XResolution: - case ExifTagValue.YResolution: - case ExifTagValue.Predictor: - case ExifTagValue.PlanarConfiguration: - case ExifTagValue.PhotometricInterpretation: - case ExifTagValue.BitsPerSample: - case ExifTagValue.ColorMap: - return true; - } - - return false; - } } } diff --git a/tests/ImageSharp.Tests/Metadata/Profiles/Exif/ExifProfileTests.cs b/tests/ImageSharp.Tests/Metadata/Profiles/Exif/ExifProfileTests.cs index 1f4bbaea9..23d29b4eb 100644 --- a/tests/ImageSharp.Tests/Metadata/Profiles/Exif/ExifProfileTests.cs +++ b/tests/ImageSharp.Tests/Metadata/Profiles/Exif/ExifProfileTests.cs @@ -175,9 +175,7 @@ namespace SixLabors.ImageSharp.Tests https://exiftool.org/TagNames/EXIF.html */ [InlineData(TestImageWriteFormat.Jpeg, 16)] [InlineData(TestImageWriteFormat.Png, 16)] - /* Note: The tiff format has 24 expected profile values, because some tiff specific exif - values will be written in addition to the original profile. */ - [InlineData(TestImageWriteFormat.Tiff, 24)] + [InlineData(TestImageWriteFormat.Tiff, 16)] public void SetValue(TestImageWriteFormat imageFormat, int expectedProfileValueCount) { Image image = TestFile.Create(TestImages.Jpeg.Baseline.Floorplan).CreateRgba32Image();