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();