Browse Source

Remove Tiff specific values from the EXIF profile

pull/1553/head
Brian Popow 5 years ago
parent
commit
875db67386
  1. 17
      src/ImageSharp/Formats/Tiff/TiffDecoderMetadataCreator.cs
  2. 20
      src/ImageSharp/Formats/Tiff/TiffFrameMetadata.cs
  3. 4
      tests/ImageSharp.Tests/Metadata/Profiles/Exif/ExifProfileTests.cs

17
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)

20
src/ImageSharp/Formats/Tiff/TiffFrameMetadata.cs

@ -208,25 +208,5 @@ namespace SixLabors.ImageSharp.Formats.Tiff
/// <inheritdoc/>
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;
}
}
}

4
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<Rgba32> image = TestFile.Create(TestImages.Jpeg.Baseline.Floorplan).CreateRgba32Image();

Loading…
Cancel
Save