mirror of https://github.com/SixLabors/ImageSharp
15 changed files with 353 additions and 20 deletions
@ -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)); |
||||
|
} |
||||
|
} |
||||
@ -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); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,3 @@ |
|||||
|
version https://git-lfs.github.com/spec/v1 |
||||
|
oid sha256:ddb202145a9bce7670cc372ee578de5a53cd52cc8d5ae8a9ebdc9f9c4f4a7e81 |
||||
|
size 12480 |
||||
@ -0,0 +1,3 @@ |
|||||
|
version https://git-lfs.github.com/spec/v1 |
||||
|
oid sha256:90178643a159ec50335e9314836df924233debeb100763af0f77cd1be3cf58ab |
||||
|
size 12480 |
||||
@ -0,0 +1,3 @@ |
|||||
|
version https://git-lfs.github.com/spec/v1 |
||||
|
oid sha256:b38e61ccb01e10e26fb10c335fc6fca9ad087b0fb0df833e54bb02d1246e20d5 |
||||
|
size 12480 |
||||
@ -0,0 +1,3 @@ |
|||||
|
version https://git-lfs.github.com/spec/v1 |
||||
|
oid sha256:a2d92b0c430cefc390f13961e00950ee7246b013335594dd249ba823eb3c3fdb |
||||
|
size 12564 |
||||
@ -0,0 +1,3 @@ |
|||||
|
version https://git-lfs.github.com/spec/v1 |
||||
|
oid sha256:ace8a27dbed9f918993615e545a12310b84ad94bc6af8e256258e69731f1c7ce |
||||
|
size 12480 |
||||
@ -0,0 +1,3 @@ |
|||||
|
version https://git-lfs.github.com/spec/v1 |
||||
|
oid sha256:2c5ebdc3774955d3b47644f57bd023e764a93ca2271118152ae920b34c1784bb |
||||
|
size 12480 |
||||
@ -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> |
||||
|
ImageWidth (1 Short): 64<br> |
||||
|
ImageLength (1 Short): 64<br> |
||||
|
BitsPerSample (3 Short): 8, 8, 8<br> |
||||
|
PhotometricInterpretation (1 Short): RGB<br> |
||||
|
StripOffsets (1 Short): 8<br> |
||||
|
SamplesPerPixel (1 Short): 3<br> |
||||
|
RowsPerStrip (1 Short): 64<br> |
||||
|
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> |
||||
|
ImageWidth (1 Short): 64<br> |
||||
|
ImageLength (1 Short): 64<br> |
||||
|
BitsPerSample (3 Short): 8, 8, 8<br> |
||||
|
PhotometricInterpretation (1 Short): RGB<br> |
||||
|
StripOffsets (1 Short): 16<br> |
||||
|
SamplesPerPixel (1 Short): 3<br> |
||||
|
RowsPerStrip (1 Short): 64<br> |
||||
|
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> |
||||
|
ImageWidth (1 Short): 64<br> |
||||
|
ImageLength (1 Short): 64<br> |
||||
|
BitsPerSample (3 Short): 8, 8, 8<br> |
||||
|
PhotometricInterpretation (1 Short): RGB<br> |
||||
|
StripOffsets (1 Short): 16<br> |
||||
|
SamplesPerPixel (1 Short): 3<br> |
||||
|
RowsPerStrip (1 Short): 64<br> |
||||
|
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> |
||||
|
ImageWidth (1 Short): 64<br> |
||||
|
ImageLength (1 Short): 64<br> |
||||
|
BitsPerSample (3 Short): 8, 8, 8<br> |
||||
|
PhotometricInterpretation (1 Short): RGB<br> |
||||
|
StripOffsets (1 Long): 16<br> |
||||
|
SamplesPerPixel (1 Short): 3<br> |
||||
|
RowsPerStrip (1 Short): 64<br> |
||||
|
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> |
||||
|
ImageWidth (1 Short): 64<br> |
||||
|
ImageLength (1 Short): 64<br> |
||||
|
BitsPerSample (3 Short): 8, 8, 8<br> |
||||
|
PhotometricInterpretation (1 Short): RGB<br> |
||||
|
StripOffsets (1 Long8): 16<br> |
||||
|
SamplesPerPixel (1 Short): 3<br> |
||||
|
RowsPerStrip (1 Short): 64<br> |
||||
|
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> |
||||
|
ImageWidth (1 Short): 64<br> |
||||
|
ImageLength (1 Short): 64<br> |
||||
|
BitsPerSample (3 Short): 8, 8, 8<br> |
||||
|
PhotometricInterpretation (1 Short): RGB<br> |
||||
|
StripOffsets (2 Long): 16, 6160<br> |
||||
|
SamplesPerPixel (1 Short): 3<br> |
||||
|
RowsPerStrip (1 Short): 32<br> |
||||
|
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> |
||||
|
ImageWidth (1 Short): 64<br> |
||||
|
ImageLength (1 Short): 64<br> |
||||
|
BitsPerSample (3 Short): 8, 8, 8<br> |
||||
|
PhotometricInterpretation (1 Short): RGB<br> |
||||
|
SamplesPerPixel (1 Short): 3<br> |
||||
|
TileWidth (1 Short): 32<br> |
||||
|
TileLength (1 Short): 32<br> |
||||
|
TileOffsets (4 Long8): 16, 3088, 6160, 9232<br> |
||||
|
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> |
||||
|
ImageWidth (1 Short): 64<br> |
||||
|
ImageLength (1 Short): 64<br> |
||||
|
BitsPerSample (3 Short): 8, 8, 8<br> |
||||
|
PhotometricInterpretation (1 Short): RGB<br> |
||||
|
StripOffsets (1 Short): 3284<br> |
||||
|
SamplesPerPixel (1 Short): 3<br> |
||||
|
RowsPerStrip (1 Short): 64<br> |
||||
|
StripByteCounts (1 Short): 12288<br> |
||||
|
SubIFDs (1 IFD): 3088<br> |
||||
|
SubIfd Offset: 3088<br> |
||||
|
NewSubFileType (1 Long): 1<br> |
||||
|
ImageWidth (1 Short): 32<br> |
||||
|
ImageLength (1 Short): 32<br> |
||||
|
BitsPerSample (3 Short): 8, 8, 8<br> |
||||
|
PhotometricInterpretation (1 Short): RGB<br> |
||||
|
StripOffsets (1 Short): 16<br> |
||||
|
SamplesPerPixel (1 Short): 3<br> |
||||
|
RowsPerStrip (1 Short): 32<br> |
||||
|
StripByteCounts (1 Short): 3072<br> |
||||
|
Ifd Offset: 31324<br> |
||||
|
ImageWidth (1 Short): 64<br> |
||||
|
ImageLength (1 Short): 64<br> |
||||
|
BitsPerSample (3 Short): 8, 8, 8<br> |
||||
|
PhotometricInterpretation (1 Short): RGB<br> |
||||
|
StripOffsets (1 Short): 19036<br> |
||||
|
SamplesPerPixel (1 Short): 3<br> |
||||
|
RowsPerStrip (1 Short): 64<br> |
||||
|
StripByteCounts (1 Short): 12288<br> |
||||
|
SubIFDs (1 IFD): 18840<br> |
||||
|
SubIfd Offset: 18840<br> |
||||
|
NewSubFileType (1 Long): 1<br> |
||||
|
ImageWidth (1 Short): 32<br> |
||||
|
ImageLength (1 Short): 32<br> |
||||
|
BitsPerSample (3 Short): 8, 8, 8<br> |
||||
|
PhotometricInterpretation (1 Short): RGB<br> |
||||
|
StripOffsets (1 Short): 15768<br> |
||||
|
SamplesPerPixel (1 Short): 3<br> |
||||
|
RowsPerStrip (1 Short): 32<br> |
||||
|
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> |
||||
|
ImageWidth (1 Short): 64<br> |
||||
|
ImageLength (1 Short): 64<br> |
||||
|
BitsPerSample (3 Short): 8, 8, 8<br> |
||||
|
PhotometricInterpretation (1 Short): RGB<br> |
||||
|
StripOffsets (1 Short): 3284<br> |
||||
|
SamplesPerPixel (1 Short): 3<br> |
||||
|
RowsPerStrip (1 Short): 64<br> |
||||
|
StripByteCounts (1 Short): 12288<br> |
||||
|
SubIFDs (1 IFD8): 3088<br> |
||||
|
SubIfd Offset: 3088<br> |
||||
|
NewSubFileType (1 Long): 1<br> |
||||
|
ImageWidth (1 Short): 32<br> |
||||
|
ImageLength (1 Short): 32<br> |
||||
|
BitsPerSample (3 Short): 8, 8, 8<br> |
||||
|
PhotometricInterpretation (1 Short): RGB<br> |
||||
|
StripOffsets (1 Short): 16<br> |
||||
|
SamplesPerPixel (1 Short): 3<br> |
||||
|
RowsPerStrip (1 Short): 32<br> |
||||
|
StripByteCounts (1 Short): 3072<br> |
||||
|
Ifd Offset: 31324<br> |
||||
|
ImageWidth (1 Short): 64<br> |
||||
|
ImageLength (1 Short): 64<br> |
||||
|
BitsPerSample (3 Short): 8, 8, 8<br> |
||||
|
PhotometricInterpretation (1 Short): RGB<br> |
||||
|
StripOffsets (1 Short): 19036<br> |
||||
|
SamplesPerPixel (1 Short): 3<br> |
||||
|
RowsPerStrip (1 Short): 64<br> |
||||
|
StripByteCounts (1 Short): 12288<br> |
||||
|
SubIFDs (1 IFD8): 18840<br> |
||||
|
SubIfd Offset: 18840<br> |
||||
|
NewSubFileType (1 Long): 1<br> |
||||
|
ImageWidth (1 Short): 32<br> |
||||
|
ImageLength (1 Short): 32<br> |
||||
|
BitsPerSample (3 Short): 8, 8, 8<br> |
||||
|
PhotometricInterpretation (1 Short): RGB<br> |
||||
|
StripOffsets (1 Short): 15768<br> |
||||
|
SamplesPerPixel (1 Short): 3<br> |
||||
|
RowsPerStrip (1 Short): 32<br> |
||||
|
StripByteCounts (1 Short): 3072<br> |
||||
|
</p> |
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,3 @@ |
|||||
|
version https://git-lfs.github.com/spec/v1 |
||||
|
oid sha256:85c8da46abc2284f0ddac10bd03a7c98ee51024840b7e43f41f1c6a09bc02e7e |
||||
|
size 31520 |
||||
@ -0,0 +1,3 @@ |
|||||
|
version https://git-lfs.github.com/spec/v1 |
||||
|
oid sha256:93e5ac30f507bec7936746ad6e109631c09f9b2332081e986063219ad2452a4a |
||||
|
size 31520 |
||||
@ -0,0 +1,3 @@ |
|||||
|
version https://git-lfs.github.com/spec/v1 |
||||
|
oid sha256:cfa7fcf6927be5de644beb238067479e8d834d0cbe2257b00302f5dde84a1c1a |
||||
|
size 12404 |
||||
@ -0,0 +1,3 @@ |
|||||
|
BigTIFF samples. |
||||
|
|
||||
|
Downloaded from AWARE SYSTEMS: https://www.awaresystems.be/imaging/tiff/bigtiff.html |
||||
Loading…
Reference in new issue