Browse Source

Add BigTiff decoder tests

pull/1760/head
Ildar Khayrutdinov 5 years ago
parent
commit
ae577bba87
  1. 35
      tests/ImageSharp.Tests/Formats/Tiff/BigTiffDecoderTests.cs
  2. 32
      tests/ImageSharp.Tests/Formats/Tiff/TiffDecoderBaseTester.cs
  3. 22
      tests/ImageSharp.Tests/Formats/Tiff/TiffDecoderTests.cs
  4. 15
      tests/ImageSharp.Tests/TestImages.cs
  5. 3
      tests/Images/Input/Tiff/BigTiff/BigTIFF.tif
  6. 3
      tests/Images/Input/Tiff/BigTiff/BigTIFFLong.tif
  7. 3
      tests/Images/Input/Tiff/BigTiff/BigTIFFLong8.tif
  8. 3
      tests/Images/Input/Tiff/BigTiff/BigTIFFLong8Tiles.tif
  9. 3
      tests/Images/Input/Tiff/BigTiff/BigTIFFMotorola.tif
  10. 3
      tests/Images/Input/Tiff/BigTiff/BigTIFFMotorolaLongStrips.tif
  11. 239
      tests/Images/Input/Tiff/BigTiff/BigTIFFSamples.html
  12. 3
      tests/Images/Input/Tiff/BigTiff/BigTIFFSubIFD4.tif
  13. 3
      tests/Images/Input/Tiff/BigTiff/BigTIFFSubIFD8.tif
  14. 3
      tests/Images/Input/Tiff/BigTiff/Classic.tif
  15. 3
      tests/Images/Input/Tiff/BigTiff/readme.md

35
tests/ImageSharp.Tests/Formats/Tiff/BigTiffDecoderTests.cs

@ -0,0 +1,35 @@
// Copyright (c) Six Labors.
// Licensed under the Apache License, Version 2.0.
// ReSharper disable InconsistentNaming
using System;
using SixLabors.ImageSharp.PixelFormats;
using Xunit;
using static SixLabors.ImageSharp.Tests.TestImages.BigTiff;
namespace SixLabors.ImageSharp.Tests.Formats.Tiff
{
[Collection("RunSerial")]
[Trait("Format", "Tiff")]
[Trait("Format", "BigTiff")]
public class BigTiffDecoderTests : TiffDecoderBaseTester
{
[Theory]
[WithFile(BigTIFF, PixelTypes.Rgba32)]
[WithFile(BigTIFFLong, PixelTypes.Rgba32)]
[WithFile(BigTIFFLong8, PixelTypes.Rgba32)]
[WithFile(BigTIFFMotorola, PixelTypes.Rgba32)]
[WithFile(BigTIFFMotorolaLongStrips, PixelTypes.Rgba32)]
[WithFile(BigTIFFSubIFD4, PixelTypes.Rgba32)]
[WithFile(BigTIFFSubIFD8, PixelTypes.Rgba32)]
public void TiffDecoder_CanDecode<TPixel>(TestImageProvider<TPixel> provider)
where TPixel : unmanaged, IPixel<TPixel> => TestTiffDecoder(provider);
[Theory]
[WithFile(BigTIFFLong8Tiles, PixelTypes.Rgba32)]
public void ThrowsNotSupported<TPixel>(TestImageProvider<TPixel> provider)
where TPixel : unmanaged, IPixel<TPixel> => Assert.Throws<NotSupportedException>(() => provider.GetImage(TiffDecoder));
}
}

32
tests/ImageSharp.Tests/Formats/Tiff/TiffDecoderBaseTester.cs

@ -0,0 +1,32 @@
// Copyright (c) Six Labors.
// Licensed under the Apache License, Version 2.0.
// ReSharper disable InconsistentNaming
using SixLabors.ImageSharp.Formats;
using SixLabors.ImageSharp.Formats.Tiff;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison;
using SixLabors.ImageSharp.Tests.TestUtilities.ReferenceCodecs;
using Xunit;
namespace SixLabors.ImageSharp.Tests.Formats.Tiff
{
public abstract class TiffDecoderBaseTester
{
protected static TiffDecoder TiffDecoder => new TiffDecoder();
protected static MagickReferenceDecoder ReferenceDecoder => new MagickReferenceDecoder();
protected static void TestTiffDecoder<TPixel>(TestImageProvider<TPixel> provider, IImageDecoder referenceDecoder = null, bool useExactComparer = true, float compareTolerance = 0.001f)
where TPixel : unmanaged, IPixel<TPixel>
{
using Image<TPixel> image = provider.GetImage(TiffDecoder);
image.DebugSave(provider);
image.CompareToOriginal(
provider,
useExactComparer ? ImageComparer.Exact : ImageComparer.Tolerant(compareTolerance),
referenceDecoder ?? ReferenceDecoder);
}
}
}

22
tests/ImageSharp.Tests/Formats/Tiff/TiffDecoderTests.cs

@ -4,12 +4,9 @@
// ReSharper disable InconsistentNaming
using System;
using System.IO;
using SixLabors.ImageSharp.Formats;
using SixLabors.ImageSharp.Formats.Tiff;
using SixLabors.ImageSharp.Metadata;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison;
using SixLabors.ImageSharp.Tests.TestUtilities.ReferenceCodecs;
using Xunit;
@ -19,20 +16,16 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tiff
{
[Collection("RunSerial")]
[Trait("Format", "Tiff")]
public class TiffDecoderTests
public class TiffDecoderTests : TiffDecoderBaseTester
{
public static readonly string[] MultiframeTestImages = Multiframes;
private static TiffDecoder TiffDecoder => new TiffDecoder();
private static MagickReferenceDecoder ReferenceDecoder => new MagickReferenceDecoder();
[Theory]
[WithFile(RgbUncompressedTiled, PixelTypes.Rgba32)]
[WithFile(MultiframeDifferentSize, PixelTypes.Rgba32)]
[WithFile(MultiframeDifferentVariants, PixelTypes.Rgba32)]
public void ThrowsNotSupported<TPixel>(TestImageProvider<TPixel> provider)
where TPixel : unmanaged, IPixel<TPixel> => Assert.Throws<NotSupportedException>(() => provider.GetImage(TiffDecoder));
where TPixel : unmanaged, IPixel<TPixel> => Assert.Throws<NotSupportedException>(() => provider.GetImage(TiffDecoder));
[Theory]
[InlineData(RgbUncompressed, 24, 256, 256, 300, 300, PixelResolutionUnit.PixelsPerInch)]
@ -397,16 +390,5 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tiff
image.DebugSaveMultiFrame(provider);
image.CompareToOriginalMultiFrame(provider, ImageComparer.Exact, ReferenceDecoder);
}
private static void TestTiffDecoder<TPixel>(TestImageProvider<TPixel> provider, IImageDecoder referenceDecoder = null, bool useExactComparer = true, float compareTolerance = 0.001f)
where TPixel : unmanaged, IPixel<TPixel>
{
using Image<TPixel> image = provider.GetImage(TiffDecoder);
image.DebugSave(provider);
image.CompareToOriginal(
provider,
useExactComparer ? ImageComparer.Exact : ImageComparer.Tolerant(compareTolerance),
referenceDecoder ?? ReferenceDecoder);
}
}
}

15
tests/ImageSharp.Tests/TestImages.cs

@ -672,5 +672,20 @@ namespace SixLabors.ImageSharp.Tests
public static readonly string[] Metadata = { SampleMetadata };
}
public static class BigTiff
{
public const string BasePath = "Tiff/BigTiff/";
public const string BigTIFF = BasePath + "BigTIFF.tif";
public const string BigTIFFLong = BasePath + "BigTIFFLong.tif";
public const string BigTIFFLong8 = BasePath + "BigTIFFLong8.tif";
public const string BigTIFFLong8Tiles = BasePath + "BigTIFFLong8Tiles.tif";
public const string BigTIFFMotorola = BasePath + "BigTIFFMotorola.tif";
public const string BigTIFFMotorolaLongStrips = BasePath + "BigTIFFMotorolaLongStrips.tif";
public const string BigTIFFSubIFD4 = BasePath + "BigTIFFSubIFD4.tif";
public const string BigTIFFSubIFD8 = BasePath + "BigTIFFSubIFD8.tif";
}
}
}

3
tests/Images/Input/Tiff/BigTiff/BigTIFF.tif

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ddb202145a9bce7670cc372ee578de5a53cd52cc8d5ae8a9ebdc9f9c4f4a7e81
size 12480

3
tests/Images/Input/Tiff/BigTiff/BigTIFFLong.tif

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:90178643a159ec50335e9314836df924233debeb100763af0f77cd1be3cf58ab
size 12480

3
tests/Images/Input/Tiff/BigTiff/BigTIFFLong8.tif

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b38e61ccb01e10e26fb10c335fc6fca9ad087b0fb0df833e54bb02d1246e20d5
size 12480

3
tests/Images/Input/Tiff/BigTiff/BigTIFFLong8Tiles.tif

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a2d92b0c430cefc390f13961e00950ee7246b013335594dd249ba823eb3c3fdb
size 12564

3
tests/Images/Input/Tiff/BigTiff/BigTIFFMotorola.tif

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ace8a27dbed9f918993615e545a12310b84ad94bc6af8e256258e69731f1c7ce
size 12480

3
tests/Images/Input/Tiff/BigTiff/BigTIFFMotorolaLongStrips.tif

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2c5ebdc3774955d3b47644f57bd023e764a93ca2271118152ae920b34c1784bb
size 12480

239
tests/Images/Input/Tiff/BigTiff/BigTIFFSamples.html

@ -0,0 +1,239 @@
<html>
<head>
</head>
<body>
<p>
These images were created by <a href="http://www.awaresystems.be/">AWare Systems</a>.
</p>
<h1>Index</h1>
<p>
<a href="#classic">Classic.tif</a><br>
<a href="#bigtiff">BigTIFF.tif</a><br>
<a href="#bigtiffmotorola">BigTIFFMotorola.tif</a><br>
<a href="#bigtifflong">BigTIFFLong.tif</a><br>
<a href="#bigtifflong8">BigTIFFLong8.tif</a><br>
<a href="#bigtiffmotorolalongstrips">BigTIFFMotorolaLongStrips.tif</a><br>
<a href="#bigtifflong8tiles">BigTIFFLong8Tiles.tif</a><br>
<a href="#bigtiffsubifd4">BigTIFFSubIFD4.tif</a><br>
<a href="#bigtiffsubifd8">BigTIFFSubIFD8.tif</a><br>
</p>
<h1 id="classic">Classic.tif</h1>
<p>
Classic.tif is a basic Classic TIFF file. All files in this package have the same actual image content,
so this TIFF file serves as a reference.
</p>
<p>
Format: Classic TIFF<br>
Byte Order: Intel<br>
Ifd Offset: 12302<br>
&nbsp;&nbsp;&nbsp;&nbsp;ImageWidth (1 Short): 64<br>
&nbsp;&nbsp;&nbsp;&nbsp;ImageLength (1 Short): 64<br>
&nbsp;&nbsp;&nbsp;&nbsp;BitsPerSample (3 Short): 8, 8, 8<br>
&nbsp;&nbsp;&nbsp;&nbsp;PhotometricInterpretation (1 Short): RGB<br>
&nbsp;&nbsp;&nbsp;&nbsp;StripOffsets (1 Short): 8<br>
&nbsp;&nbsp;&nbsp;&nbsp;SamplesPerPixel (1 Short): 3<br>
&nbsp;&nbsp;&nbsp;&nbsp;RowsPerStrip (1 Short): 64<br>
&nbsp;&nbsp;&nbsp;&nbsp;StripByteCounts (1 Short): 12288<br>
</p>
<h1 id="bigtiff">BigTIFF.tif</h1>
<p>
BigTIFF.tif ressembles Classic.tif as close as possible. Except that it's a BigTIFF, that is...
</p>
<p>
Format: BigTIFF<br>
Byte Order: Intel<br>
Ifd Offset: 12304<br>
&nbsp;&nbsp;&nbsp;&nbsp;ImageWidth (1 Short): 64<br>
&nbsp;&nbsp;&nbsp;&nbsp;ImageLength (1 Short): 64<br>
&nbsp;&nbsp;&nbsp;&nbsp;BitsPerSample (3 Short): 8, 8, 8<br>
&nbsp;&nbsp;&nbsp;&nbsp;PhotometricInterpretation (1 Short): RGB<br>
&nbsp;&nbsp;&nbsp;&nbsp;StripOffsets (1 Short): 16<br>
&nbsp;&nbsp;&nbsp;&nbsp;SamplesPerPixel (1 Short): 3<br>
&nbsp;&nbsp;&nbsp;&nbsp;RowsPerStrip (1 Short): 64<br>
&nbsp;&nbsp;&nbsp;&nbsp;StripByteCounts (1 Short): 12288<br>
</p>
<h1 id="bigtiffmotorola">BigTIFFMotorola.tif</h1>
<p>
BigTIFFMotorola.tif reverses the byte order.
</p>
<p>
Format: BigTIFF<br>
Byte Order: Motorola<br>
Ifd Offset: 12304<br>
&nbsp;&nbsp;&nbsp;&nbsp;ImageWidth (1 Short): 64<br>
&nbsp;&nbsp;&nbsp;&nbsp;ImageLength (1 Short): 64<br>
&nbsp;&nbsp;&nbsp;&nbsp;BitsPerSample (3 Short): 8, 8, 8<br>
&nbsp;&nbsp;&nbsp;&nbsp;PhotometricInterpretation (1 Short): RGB<br>
&nbsp;&nbsp;&nbsp;&nbsp;StripOffsets (1 Short): 16<br>
&nbsp;&nbsp;&nbsp;&nbsp;SamplesPerPixel (1 Short): 3<br>
&nbsp;&nbsp;&nbsp;&nbsp;RowsPerStrip (1 Short): 64<br>
&nbsp;&nbsp;&nbsp;&nbsp;StripByteCounts (1 Short): 12288<br>
</p>
<h1 id="bigtifflong">BigTIFFLong.tif</h1>
<p>
All previous TIFFs specify DataType Short for StripOffsets and StripByteCounts tags. This BigTIFF instead specifies DataType Long, for these tags.
</p>
<p>
Format: BigTIFF<br>
Byte Order: Intel<br>
Ifd Offset: 12304<br>
&nbsp;&nbsp;&nbsp;&nbsp;ImageWidth (1 Short): 64<br>
&nbsp;&nbsp;&nbsp;&nbsp;ImageLength (1 Short): 64<br>
&nbsp;&nbsp;&nbsp;&nbsp;BitsPerSample (3 Short): 8, 8, 8<br>
&nbsp;&nbsp;&nbsp;&nbsp;PhotometricInterpretation (1 Short): RGB<br>
&nbsp;&nbsp;&nbsp;&nbsp;StripOffsets (1 Long): 16<br>
&nbsp;&nbsp;&nbsp;&nbsp;SamplesPerPixel (1 Short): 3<br>
&nbsp;&nbsp;&nbsp;&nbsp;RowsPerStrip (1 Short): 64<br>
&nbsp;&nbsp;&nbsp;&nbsp;StripByteCounts (1 Long): 12288<br>
</p>
<h1 id="bigtifflong8">BigTIFFLong8.tif</h1>
<p>
This next one specifies DataType Long8, for StripOffsets and StripByteCounts tags.
</p>
<p>
Format: BigTIFF<br>
Byte Order: Intel<br>
Ifd Offset: 12304<br>
&nbsp;&nbsp;&nbsp;&nbsp;ImageWidth (1 Short): 64<br>
&nbsp;&nbsp;&nbsp;&nbsp;ImageLength (1 Short): 64<br>
&nbsp;&nbsp;&nbsp;&nbsp;BitsPerSample (3 Short): 8, 8, 8<br>
&nbsp;&nbsp;&nbsp;&nbsp;PhotometricInterpretation (1 Short): RGB<br>
&nbsp;&nbsp;&nbsp;&nbsp;StripOffsets (1 Long8): 16<br>
&nbsp;&nbsp;&nbsp;&nbsp;SamplesPerPixel (1 Short): 3<br>
&nbsp;&nbsp;&nbsp;&nbsp;RowsPerStrip (1 Short): 64<br>
&nbsp;&nbsp;&nbsp;&nbsp;StripByteCounts (1 Long8): 12288<br>
</p>
<h1 id="bigtiffmotorolalongstrips">BigTIFFMotorolaLongStrips.tif</h1>
<p>
This BigTIFF has Motorola byte order, plus, it's divided over two strips. StripOffsets and StripByteCounts tags have DataType Long, so their actual value fits inside the IFD.
</p>
<p>
Format: BigTIFF<br>
Byte Order: Motorola<br>
Ifd Offset: 12304<br>
&nbsp;&nbsp;&nbsp;&nbsp;ImageWidth (1 Short): 64<br>
&nbsp;&nbsp;&nbsp;&nbsp;ImageLength (1 Short): 64<br>
&nbsp;&nbsp;&nbsp;&nbsp;BitsPerSample (3 Short): 8, 8, 8<br>
&nbsp;&nbsp;&nbsp;&nbsp;PhotometricInterpretation (1 Short): RGB<br>
&nbsp;&nbsp;&nbsp;&nbsp;StripOffsets (2 Long): 16, 6160<br>
&nbsp;&nbsp;&nbsp;&nbsp;SamplesPerPixel (1 Short): 3<br>
&nbsp;&nbsp;&nbsp;&nbsp;RowsPerStrip (1 Short): 32<br>
&nbsp;&nbsp;&nbsp;&nbsp;StripByteCounts (2 Long): 6144, 6144<br>
</p>
<h1 id="bigtifflong8tiles">BigTIFFLong8Tiles.tif</h1>
<p>
BigTIFFLong8Tiles.tif is a tiled BigTIFF. TileOffsets and TileByteCounts tags specify DataType Long8.
</p>
<p>
Format: BigTIFF<br>
Byte Order: Intel<br>
Ifd Offset: 12368<br>
&nbsp;&nbsp;&nbsp;&nbsp;ImageWidth (1 Short): 64<br>
&nbsp;&nbsp;&nbsp;&nbsp;ImageLength (1 Short): 64<br>
&nbsp;&nbsp;&nbsp;&nbsp;BitsPerSample (3 Short): 8, 8, 8<br>
&nbsp;&nbsp;&nbsp;&nbsp;PhotometricInterpretation (1 Short): RGB<br>
&nbsp;&nbsp;&nbsp;&nbsp;SamplesPerPixel (1 Short): 3<br>
&nbsp;&nbsp;&nbsp;&nbsp;TileWidth (1 Short): 32<br>
&nbsp;&nbsp;&nbsp;&nbsp;TileLength (1 Short): 32<br>
&nbsp;&nbsp;&nbsp;&nbsp;TileOffsets (4 Long8): 16, 3088, 6160, 9232<br>
&nbsp;&nbsp;&nbsp;&nbsp;TileByteCounts (4 Long8): 3072, 3072, 3072, 3072<br>
</p>
<h1 id="bigtiffsubifd4">BigTIFFSubIFD4.tif</h1>
<p>
This BigTIFF contains two pages, the second page showing almost the same image content as the first, except that the black square is white, and text color is black.
Both pages point to a downsample SubIFD, using SubIFDs DataType TIFF_IFD.
</p>
<p>
Format: BigTIFF<br>
Byte Order: Intel<br>
Ifd Offset: 15572<br>
&nbsp;&nbsp;&nbsp;&nbsp;ImageWidth (1 Short): 64<br>
&nbsp;&nbsp;&nbsp;&nbsp;ImageLength (1 Short): 64<br>
&nbsp;&nbsp;&nbsp;&nbsp;BitsPerSample (3 Short): 8, 8, 8<br>
&nbsp;&nbsp;&nbsp;&nbsp;PhotometricInterpretation (1 Short): RGB<br>
&nbsp;&nbsp;&nbsp;&nbsp;StripOffsets (1 Short): 3284<br>
&nbsp;&nbsp;&nbsp;&nbsp;SamplesPerPixel (1 Short): 3<br>
&nbsp;&nbsp;&nbsp;&nbsp;RowsPerStrip (1 Short): 64<br>
&nbsp;&nbsp;&nbsp;&nbsp;StripByteCounts (1 Short): 12288<br>
&nbsp;&nbsp;&nbsp;&nbsp;SubIFDs (1 IFD): 3088<br>
SubIfd Offset: 3088<br>
&nbsp;&nbsp;&nbsp;&nbsp;NewSubFileType (1 Long): 1<br>
&nbsp;&nbsp;&nbsp;&nbsp;ImageWidth (1 Short): 32<br>
&nbsp;&nbsp;&nbsp;&nbsp;ImageLength (1 Short): 32<br>
&nbsp;&nbsp;&nbsp;&nbsp;BitsPerSample (3 Short): 8, 8, 8<br>
&nbsp;&nbsp;&nbsp;&nbsp;PhotometricInterpretation (1 Short): RGB<br>
&nbsp;&nbsp;&nbsp;&nbsp;StripOffsets (1 Short): 16<br>
&nbsp;&nbsp;&nbsp;&nbsp;SamplesPerPixel (1 Short): 3<br>
&nbsp;&nbsp;&nbsp;&nbsp;RowsPerStrip (1 Short): 32<br>
&nbsp;&nbsp;&nbsp;&nbsp;StripByteCounts (1 Short): 3072<br>
Ifd Offset: 31324<br>
&nbsp;&nbsp;&nbsp;&nbsp;ImageWidth (1 Short): 64<br>
&nbsp;&nbsp;&nbsp;&nbsp;ImageLength (1 Short): 64<br>
&nbsp;&nbsp;&nbsp;&nbsp;BitsPerSample (3 Short): 8, 8, 8<br>
&nbsp;&nbsp;&nbsp;&nbsp;PhotometricInterpretation (1 Short): RGB<br>
&nbsp;&nbsp;&nbsp;&nbsp;StripOffsets (1 Short): 19036<br>
&nbsp;&nbsp;&nbsp;&nbsp;SamplesPerPixel (1 Short): 3<br>
&nbsp;&nbsp;&nbsp;&nbsp;RowsPerStrip (1 Short): 64<br>
&nbsp;&nbsp;&nbsp;&nbsp;StripByteCounts (1 Short): 12288<br>
&nbsp;&nbsp;&nbsp;&nbsp;SubIFDs (1 IFD): 18840<br>
SubIfd Offset: 18840<br>
&nbsp;&nbsp;&nbsp;&nbsp;NewSubFileType (1 Long): 1<br>
&nbsp;&nbsp;&nbsp;&nbsp;ImageWidth (1 Short): 32<br>
&nbsp;&nbsp;&nbsp;&nbsp;ImageLength (1 Short): 32<br>
&nbsp;&nbsp;&nbsp;&nbsp;BitsPerSample (3 Short): 8, 8, 8<br>
&nbsp;&nbsp;&nbsp;&nbsp;PhotometricInterpretation (1 Short): RGB<br>
&nbsp;&nbsp;&nbsp;&nbsp;StripOffsets (1 Short): 15768<br>
&nbsp;&nbsp;&nbsp;&nbsp;SamplesPerPixel (1 Short): 3<br>
&nbsp;&nbsp;&nbsp;&nbsp;RowsPerStrip (1 Short): 32<br>
&nbsp;&nbsp;&nbsp;&nbsp;StripByteCounts (1 Short): 3072<br>
</p>
<h1 id="bigtiffsubifd8">BigTIFFSubIFD8.tif</h1>
<p>
BigTIFFSubIFD4.tif is very much the same as BigTIFFSubIFD4.tif, except that the new DataType TIFF_IFD8 is used for the SubIFDs tag.
</p>
<p>
Format: BigTIFF<br>
Byte Order: Intel<br>
Ifd Offset: 15572<br>
&nbsp;&nbsp;&nbsp;&nbsp;ImageWidth (1 Short): 64<br>
&nbsp;&nbsp;&nbsp;&nbsp;ImageLength (1 Short): 64<br>
&nbsp;&nbsp;&nbsp;&nbsp;BitsPerSample (3 Short): 8, 8, 8<br>
&nbsp;&nbsp;&nbsp;&nbsp;PhotometricInterpretation (1 Short): RGB<br>
&nbsp;&nbsp;&nbsp;&nbsp;StripOffsets (1 Short): 3284<br>
&nbsp;&nbsp;&nbsp;&nbsp;SamplesPerPixel (1 Short): 3<br>
&nbsp;&nbsp;&nbsp;&nbsp;RowsPerStrip (1 Short): 64<br>
&nbsp;&nbsp;&nbsp;&nbsp;StripByteCounts (1 Short): 12288<br>
&nbsp;&nbsp;&nbsp;&nbsp;SubIFDs (1 IFD8): 3088<br>
SubIfd Offset: 3088<br>
&nbsp;&nbsp;&nbsp;&nbsp;NewSubFileType (1 Long): 1<br>
&nbsp;&nbsp;&nbsp;&nbsp;ImageWidth (1 Short): 32<br>
&nbsp;&nbsp;&nbsp;&nbsp;ImageLength (1 Short): 32<br>
&nbsp;&nbsp;&nbsp;&nbsp;BitsPerSample (3 Short): 8, 8, 8<br>
&nbsp;&nbsp;&nbsp;&nbsp;PhotometricInterpretation (1 Short): RGB<br>
&nbsp;&nbsp;&nbsp;&nbsp;StripOffsets (1 Short): 16<br>
&nbsp;&nbsp;&nbsp;&nbsp;SamplesPerPixel (1 Short): 3<br>
&nbsp;&nbsp;&nbsp;&nbsp;RowsPerStrip (1 Short): 32<br>
&nbsp;&nbsp;&nbsp;&nbsp;StripByteCounts (1 Short): 3072<br>
Ifd Offset: 31324<br>
&nbsp;&nbsp;&nbsp;&nbsp;ImageWidth (1 Short): 64<br>
&nbsp;&nbsp;&nbsp;&nbsp;ImageLength (1 Short): 64<br>
&nbsp;&nbsp;&nbsp;&nbsp;BitsPerSample (3 Short): 8, 8, 8<br>
&nbsp;&nbsp;&nbsp;&nbsp;PhotometricInterpretation (1 Short): RGB<br>
&nbsp;&nbsp;&nbsp;&nbsp;StripOffsets (1 Short): 19036<br>
&nbsp;&nbsp;&nbsp;&nbsp;SamplesPerPixel (1 Short): 3<br>
&nbsp;&nbsp;&nbsp;&nbsp;RowsPerStrip (1 Short): 64<br>
&nbsp;&nbsp;&nbsp;&nbsp;StripByteCounts (1 Short): 12288<br>
&nbsp;&nbsp;&nbsp;&nbsp;SubIFDs (1 IFD8): 18840<br>
SubIfd Offset: 18840<br>
&nbsp;&nbsp;&nbsp;&nbsp;NewSubFileType (1 Long): 1<br>
&nbsp;&nbsp;&nbsp;&nbsp;ImageWidth (1 Short): 32<br>
&nbsp;&nbsp;&nbsp;&nbsp;ImageLength (1 Short): 32<br>
&nbsp;&nbsp;&nbsp;&nbsp;BitsPerSample (3 Short): 8, 8, 8<br>
&nbsp;&nbsp;&nbsp;&nbsp;PhotometricInterpretation (1 Short): RGB<br>
&nbsp;&nbsp;&nbsp;&nbsp;StripOffsets (1 Short): 15768<br>
&nbsp;&nbsp;&nbsp;&nbsp;SamplesPerPixel (1 Short): 3<br>
&nbsp;&nbsp;&nbsp;&nbsp;RowsPerStrip (1 Short): 32<br>
&nbsp;&nbsp;&nbsp;&nbsp;StripByteCounts (1 Short): 3072<br>
</p>
</body>
</html>

3
tests/Images/Input/Tiff/BigTiff/BigTIFFSubIFD4.tif

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:85c8da46abc2284f0ddac10bd03a7c98ee51024840b7e43f41f1c6a09bc02e7e
size 31520

3
tests/Images/Input/Tiff/BigTiff/BigTIFFSubIFD8.tif

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:93e5ac30f507bec7936746ad6e109631c09f9b2332081e986063219ad2452a4a
size 31520

3
tests/Images/Input/Tiff/BigTiff/Classic.tif

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:cfa7fcf6927be5de644beb238067479e8d834d0cbe2257b00302f5dde84a1c1a
size 12404

3
tests/Images/Input/Tiff/BigTiff/readme.md

@ -0,0 +1,3 @@
BigTIFF samples.
Downloaded from AWARE SYSTEMS: https://www.awaresystems.be/imaging/tiff/bigtiff.html
Loading…
Cancel
Save