Browse Source

Add testcase for app13 marker with empty IPTC

pull/1174/head
Brian Popow 6 years ago
parent
commit
ed1a0631f0
  1. 9
      src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs
  2. 9
      tests/ImageSharp.Tests/Metadata/Profiles/IPTC/IptcProfileTests.cs
  3. 1
      tests/ImageSharp.Tests/TestImages.cs
  4. BIN
      tests/Images/Input/Jpg/baseline/iptc-psAPP13-wIPTCempty.jpg

9
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
{

9
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<TPixel>(TestImageProvider<TPixel> provider)
where TPixel : unmanaged, IPixel<TPixel>
{
using Image<TPixel> image = provider.GetImage(JpegDecoder);
Assert.Null(image.Metadata.IptcProfile);
}
[Fact]
public void IptcProfile_ToAndFromByteArray_Works()
{

1
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 =
{

BIN
tests/Images/Input/Jpg/baseline/iptc-psAPP13-wIPTCempty.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Loading…
Cancel
Save