Browse Source

Add Tiff to configurations.

Implement simple unit-tests for Tiff decoder, add test files.
Add benchmarks.
Report decoder bugs.
pull/1570/head
Ildar Khayrutdinov 7 years ago
parent
commit
25a8203bc0
  1. 2
      .gitattributes
  2. 2
      src/ImageSharp/Advanced/AotCompilerTools.cs
  3. 4
      src/ImageSharp/Configuration.cs
  4. 6
      src/ImageSharp/Formats/Tiff/TiffDecoder.cs
  5. 37
      tests/ImageSharp.Benchmarks/Codecs/DecodeTiff.cs
  6. 76
      tests/ImageSharp.Benchmarks/Codecs/DecodeTiffBig.cs
  7. 10
      tests/ImageSharp.Tests/FileTestBase.cs
  8. 35
      tests/ImageSharp.Tests/Formats/Tiff/TiffDecoderTests.cs
  9. 49
      tests/ImageSharp.Tests/TestImages.cs
  10. 5
      tests/ImageSharp.Tests/TestUtilities/TestEnvironment.Formats.cs
  11. 69
      tests/Images/Input/Tiff/Benchmarks/SixLabors.ImageSharp.Benchmarks.Codecs.DecodeTiffBig-report-github.md
  12. 69
      tests/Images/Input/Tiff/Benchmarks/SixLabors.ImageSharp.Benchmarks.Codecs.DecodeTiffBig-report.html
  13. 2
      tests/Images/Input/Tiff/Benchmarks/gen.bat
  14. 12
      tests/Images/Input/Tiff/Benchmarks/gen_big.ps1
  15. 12
      tests/Images/Input/Tiff/Benchmarks/gen_medium.ps1
  16. 0
      tests/Images/Input/Tiff/Benchmarks/genimages.ps1
  17. 3
      tests/Images/Input/Tiff/Benchmarks/jpeg444.jpg
  18. 3
      tests/Images/Input/Tiff/Benchmarks/jpeg444_big.jpg
  19. 3
      tests/Images/Input/Tiff/Benchmarks/jpeg444_medium.jpg
  20. 0
      tests/Images/Input/Tiff/Calliphora_grayscale_uncompressed.tiff
  21. 0
      tests/Images/Input/Tiff/Calliphora_palette_uncompressed.tiff
  22. 0
      tests/Images/Input/Tiff/Calliphora_rgb_deflate.tiff
  23. 0
      tests/Images/Input/Tiff/Calliphora_rgb_jpeg.tiff
  24. 0
      tests/Images/Input/Tiff/Calliphora_rgb_lzw.tiff
  25. 0
      tests/Images/Input/Tiff/Calliphora_rgb_packbits.tiff
  26. 0
      tests/Images/Input/Tiff/Calliphora_rgb_uncompressed.tiff
  27. 3
      tests/Images/Input/Tiff/grayscale_deflate_multistrip.tiff
  28. 3
      tests/Images/Input/Tiff/grayscale_uncompressed.tiff
  29. 3
      tests/Images/Input/Tiff/issues/net472/Decode_Rgba32_Calliphora_rgb_deflate.png
  30. 3
      tests/Images/Input/Tiff/issues/net472/Decode_Rgba32_Calliphora_rgb_lzw.png
  31. 3
      tests/Images/Input/Tiff/issues/net472/Decode_Rgba32_metadata_sample.png
  32. 3
      tests/Images/Input/Tiff/issues/net472/Decode_Rgba32_multipage_lzw.png
  33. 3
      tests/Images/Input/Tiff/issues/net472/Decode_Rgba32_rgb_deflate.png
  34. 3
      tests/Images/Input/Tiff/issues/net472/Decode_Rgba32_rgb_lzw_multistrip.png
  35. 3
      tests/Images/Input/Tiff/issues/netcoreapp2.1/Decode_Rgba32_Calliphora_rgb_deflate.png
  36. 3
      tests/Images/Input/Tiff/issues/netcoreapp2.1/Decode_Rgba32_Calliphora_rgb_lzw.png
  37. 3
      tests/Images/Input/Tiff/issues/netcoreapp2.1/Decode_Rgba32_metadata_sample.png
  38. 3
      tests/Images/Input/Tiff/issues/netcoreapp2.1/Decode_Rgba32_multipage_lzw.png
  39. 3
      tests/Images/Input/Tiff/issues/netcoreapp2.1/Decode_Rgba32_rgb_deflate.png
  40. 3
      tests/Images/Input/Tiff/issues/netcoreapp2.1/Decode_Rgba32_rgb_lzw_multistrip.png
  41. 3
      tests/Images/Input/Tiff/issues/netcoreapp3.1/Decode_Rgba32_Calliphora_rgb_deflate.png
  42. 3
      tests/Images/Input/Tiff/issues/netcoreapp3.1/Decode_Rgba32_Calliphora_rgb_lzw.png
  43. 3
      tests/Images/Input/Tiff/issues/netcoreapp3.1/Decode_Rgba32_metadata_sample.png
  44. 3
      tests/Images/Input/Tiff/issues/netcoreapp3.1/Decode_Rgba32_multipage_lzw.png
  45. 3
      tests/Images/Input/Tiff/issues/netcoreapp3.1/Decode_Rgba32_rgb_deflate.png
  46. 3
      tests/Images/Input/Tiff/issues/netcoreapp3.1/Decode_Rgba32_rgb_lzw.png
  47. 3
      tests/Images/Input/Tiff/issues/netcoreapp3.1/Decode_Rgba32_rgb_lzw_multistrip.png
  48. 2
      tests/Images/Input/Tiff/issues/readme.md
  49. 3
      tests/Images/Input/Tiff/metadata_sample.tiff
  50. 3
      tests/Images/Input/Tiff/multipage_ withPreview_differentSize_tiled.tiff
  51. 3
      tests/Images/Input/Tiff/multipage_deflate_withPreview.tiff
  52. 3
      tests/Images/Input/Tiff/multipage_differentSize.tiff
  53. 3
      tests/Images/Input/Tiff/multipage_differentVariants.tiff
  54. 3
      tests/Images/Input/Tiff/multipage_lzw.tiff
  55. 3
      tests/Images/Input/Tiff/palette_grayscale_deflate_multistrip.tiff
  56. 3
      tests/Images/Input/Tiff/palette_uncompressed.tiff
  57. 3
      tests/Images/Input/Tiff/rgb_deflate.tiff
  58. 3
      tests/Images/Input/Tiff/rgb_deflate_multistrip.tiff
  59. 3
      tests/Images/Input/Tiff/rgb_jpeg.tiff
  60. 3
      tests/Images/Input/Tiff/rgb_lzw.tiff
  61. 3
      tests/Images/Input/Tiff/rgb_lzw_multistrip.tiff
  62. 3
      tests/Images/Input/Tiff/rgb_packbits.tiff
  63. 3
      tests/Images/Input/Tiff/rgb_packbits_multistrip.tiff
  64. 3
      tests/Images/Input/Tiff/rgb_uncompressed.tiff
  65. 3
      tests/Images/Input/Tiff/rgb_uncompressed_tiled.tiff

2
.gitattributes

@ -82,6 +82,8 @@
*.tga binary
*.ttc binary
*.ttf binary
*.tif binary
*.tiff binary
*.webp binary
*.woff binary
*.woff2 binary

2
src/ImageSharp/Advanced/AotCompilerTools.cs

@ -94,6 +94,8 @@ namespace SixLabors.ImageSharp.Advanced
AotCodec<TPixel>(new Formats.Bmp.BmpDecoder(), new Formats.Bmp.BmpEncoder());
AotCodec<TPixel>(new Formats.Gif.GifDecoder(), new Formats.Gif.GifEncoder());
AotCodec<TPixel>(new Formats.Jpeg.JpegDecoder(), new Formats.Jpeg.JpegEncoder());
AotCodec<TPixel>(new Formats.Tga.TgaDecoder(), new Formats.Tga.TgaEncoder());
AotCodec<TPixel>(new Formats.Tiff.TiffDecoder(), new Formats.Tiff.TiffEncoder());
// TODO: Do the discovery work to figure out what works and what doesn't.
}

4
src/ImageSharp/Configuration.cs

@ -181,6 +181,7 @@ namespace SixLabors.ImageSharp
/// <see cref="GifConfigurationModule"/>
/// <see cref="BmpConfigurationModule"/>.
/// <see cref="TgaConfigurationModule"/>.
/// <see cref="TiffConfigurationModule"/>
/// </summary>
/// <returns>The default configuration of <see cref="Configuration"/>.</returns>
internal static Configuration CreateDefaultInstance()
@ -190,7 +191,8 @@ namespace SixLabors.ImageSharp
new JpegConfigurationModule(),
new GifConfigurationModule(),
new BmpConfigurationModule(),
new TgaConfigurationModule());
new TgaConfigurationModule(),
new TiffConfigurationModule());
}
}
}

6
src/ImageSharp/Formats/Tiff/TiffDecoder.cs

@ -24,7 +24,7 @@ namespace SixLabors.ImageSharp.Formats.Tiff
{
Guard.NotNull(stream, "stream");
using (TiffDecoderCore decoder = new TiffDecoderCore(configuration, this))
using (var decoder = new TiffDecoderCore(configuration, this))
{
return decoder.Decode<TPixel>(stream);
}
@ -37,11 +37,13 @@ namespace SixLabors.ImageSharp.Formats.Tiff
}
/// <inheritdoc/>
public Task<Image<TPixel>> DecodeAsync<TPixel>(Configuration configuration, Stream stream, CancellationToken cancellationToken) where TPixel : unmanaged, IPixel<TPixel>
public Task<Image<TPixel>> DecodeAsync<TPixel>(Configuration configuration, Stream stream, CancellationToken cancellationToken)
where TPixel : unmanaged, IPixel<TPixel>
{
throw new System.NotImplementedException();
}
/// <inheritdoc/>
public Task<Image> DecodeAsync(Configuration configuration, Stream stream, CancellationToken cancellationToken)
{
throw new System.NotImplementedException();

37
tests/ImageSharp.Benchmarks/Codecs/DecodeTiff.cs

@ -1,52 +1,51 @@
// Copyright (c) Six Labors.
// Licensed under the Apache License, Version 2.0.
using System.Drawing;
using System.IO;
using BenchmarkDotNet.Attributes;
using SixLabors.ImageSharp.PixelFormats;
using CoreImage = SixLabors.ImageSharp.Image;
using CoreSize = SixLabors.ImageSharp.Size;
using SixLabors.ImageSharp.Tests;
using SDImage = System.Drawing.Image;
using SDSize = System.Drawing.Size;
namespace SixLabors.ImageSharp.Benchmarks.Codecs
{
[Config(typeof(Config.ShortClr))]
public class DecodeTiff : BenchmarkBase
{
private byte[] tiffBytes;
private string TestImageFullPath => Path.Combine(TestEnvironment.InputImagesDirectoryFullPath, this.TestImage);
[Params(TestImages.Tiff.RgbLzw)]
public string TestImage { get; set; }
[GlobalSetup]
public void ReadImages()
{
if (this.tiffBytes == null)
{
this.tiffBytes = File.ReadAllBytes("../ImageSharp.Tests/TestImages/Formats/Tiff/Calliphora_rgb_uncompressed.tiff");
this.tiffBytes = File.ReadAllBytes(this.TestImageFullPath);
}
}
[Benchmark(Baseline = true, Description = "System.Drawing Tiff")]
public System.Drawing.Size TiffSystemDrawing()
public SDSize TiffSystemDrawing()
{
using (MemoryStream memoryStream = new MemoryStream(this.tiffBytes))
using (var memoryStream = new MemoryStream(this.tiffBytes))
using (var image = SDImage.FromStream(memoryStream))
{
using (var image = System.Drawing.Image.FromStream(memoryStream))
{
return image.Size;
}
return image.Size;
}
}
[Benchmark(Description = "ImageSharp Tiff")]
public CoreSize TiffCore()
public Size TiffCore()
{
using (MemoryStream memoryStream = new MemoryStream(this.tiffBytes))
using (var memoryStream = new MemoryStream(this.tiffBytes))
using (var image = Image.Load<Rgba32>(memoryStream))
{
using (Image<Rgba32> image = CoreImage.Load<Rgba32>(memoryStream))
{
return new CoreSize(image.Width, image.Height);
}
return image.Size();
}
}
}

76
tests/ImageSharp.Benchmarks/Codecs/DecodeTiffBig.cs

@ -0,0 +1,76 @@
// Copyright (c) Six Labors.
// Licensed under the Apache License, Version 2.0.
using System.IO;
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Environments;
using BenchmarkDotNet.Jobs;
using BenchmarkDotNet.Reports;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Tests;
using SDImage = System.Drawing.Image;
using SDSize = System.Drawing.Size;
namespace SixLabors.ImageSharp.Benchmarks.Codecs
{
[Config(typeof(DecodeTiffBig.Config.LongClr))]
public class DecodeTiffBig : BenchmarkBase
{
private class Config : SixLabors.ImageSharp.Benchmarks.Config
{
public class LongClr : Config
{
public LongClr()
{
this.Add(
Job.Default.With(ClrRuntime.Net472).WithLaunchCount(1).WithWarmupCount(3).WithIterationCount(5),
Job.Default.With(CoreRuntime.Core31).WithLaunchCount(1).WithWarmupCount(3).WithIterationCount(5),
Job.Default.With(CoreRuntime.Core21).WithLaunchCount(1).WithWarmupCount(3).WithIterationCount(5));
this.SummaryStyle = SummaryStyle.Default.WithMaxParameterColumnWidth(60);
}
}
}
private string prevImage = null;
private byte[] data;
private string TestImageFullPath => Path.Combine(TestEnvironment.InputImagesDirectoryFullPath, this.TestImage);
[Params(TestImages.Tiff.Benchmark_GrayscaleUncompressed, TestImages.Tiff.Benchmark_PaletteUncompressed, TestImages.Tiff.Benchmark_RgbDeflate, TestImages.Tiff.Benchmark_RgbLzw, TestImages.Tiff.Benchmark_RgbPackbits, TestImages.Tiff.Benchmark_RgbUncompressed)]
// [Params(TestImages.Tiff.GrayscaleUncompressed, TestImages.Tiff.PaletteUncompressed, TestImages.Tiff.RgbDeflate, TestImages.Tiff.RgbLzw, TestImages.Tiff.RgbPackbits, TestImages.Tiff.RgbUncompressed)]
public string TestImage { get; set; }
[IterationSetup]
public void ReadImages()
{
if (this.prevImage != this.TestImage)
{
this.data = File.ReadAllBytes(this.TestImageFullPath);
this.prevImage = this.TestImage;
}
}
[Benchmark(Baseline = true, Description = "System.Drawing Tiff")]
public SDSize TiffSystemDrawing()
{
using (var memoryStream = new MemoryStream(this.data))
using (var image = SDImage.FromStream(memoryStream))
{
return image.Size;
}
}
[Benchmark(Description = "ImageSharp Tiff")]
public Size TiffCore()
{
using (var ms = new MemoryStream(this.data))
using (var image = Image.Load<Rgba32>(ms))
{
return image.Size();
}
}
}
}

10
tests/ImageSharp.Tests/FileTestBase.cs

@ -22,7 +22,9 @@ namespace SixLabors.ImageSharp.Tests
TestImages.Bmp.Car,
TestImages.Jpeg.Baseline.Calliphora,
TestImages.Png.Splash,
TestImages.Gif.Trans
TestImages.Gif.Trans,
TestImages.Tga.Bit24PalRleTopRight,
TestImages.Tiff.RgbLzw,
};
/// <summary>
@ -64,6 +66,10 @@ namespace SixLabors.ImageSharp.Tests
public const string Png = "png";
public const string Gif = "gif";
public const string Tga = "tga";
public const string Tiff = "tiff";
}
/// <summary>
@ -109,6 +115,8 @@ namespace SixLabors.ImageSharp.Tests
// TestFile.Create(TestImages.Gif.Trans), // Perf: Enable for local testing only
// TestFile.Create(TestImages.Gif.Cheers), // Perf: Enable for local testing only
// TestFile.Create(TestImages.Gif.Giphy) // Perf: Enable for local testing only
TestFile.Create(TestImages.Tga.Bit24PalRleTopRight),
TestFile.Create(TestImages.Tiff.RgbLzw),
};
#pragma warning restore SA1515 // Single-line comment should be preceded by blank line
}

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

@ -0,0 +1,35 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
// ReSharper disable InconsistentNaming
using System.IO;
using SixLabors.ImageSharp.Formats;
using SixLabors.ImageSharp.Formats.Png;
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
{
[Trait("Category", "Tiff.BlackBox")]
public class TiffDecoderTests
{
public static readonly string[] CommonTestImages = TestImages.Tiff.All;
[Theory]
[WithFileCollection(nameof(CommonTestImages), PixelTypes.Rgba32)]
public void Decode<TPixel>(TestImageProvider<TPixel> provider)
where TPixel : unmanaged, IPixel<TPixel>
{
using (Image<TPixel> image = provider.GetImage(new TiffDecoder()))
{
image.DebugSave(provider);
image.CompareToOriginal(provider, ImageComparer.Exact, new MagickReferenceDecoder());
}
}
}
}

49
tests/ImageSharp.Tests/TestImages.cs

@ -490,5 +490,54 @@ namespace SixLabors.ImageSharp.Tests
public const string NoAlphaBits32Bit = "Tga/32bit_no_alphabits.tga";
public const string NoAlphaBits32BitRle = "Tga/32bit_rle_no_alphabits.tga";
}
public static class Tiff
{
public const string Benchmark_GrayscaleUncompressed = "Tiff/Benchmarks/jpeg444_big_grayscale_uncompressed.tiff";
public const string Benchmark_PaletteUncompressed = "Tiff/Benchmarks/jpeg444_big_palette_uncompressed.tiff";
public const string Benchmark_RgbDeflate = "Tiff/Benchmarks/jpeg444_big_rgb_deflate.tiff";
public const string Benchmark_RgbLzw = "Tiff/Benchmarks/jpeg444_big_rgb_lzw.tiff";
public const string Benchmark_RgbPackbits = "Tiff/Benchmarks/jpeg444_big_rgb_packbits.tiff";
public const string Benchmark_RgbUncompressed = "Tiff/Benchmarks/jpeg444_big_rgb_uncompressed.tiff";
public const string Calliphora_GrayscaleUncompressed = "Tiff/Calliphora_grayscale_uncompressed.tiff";
public const string Calliphora_PaletteUncompressed = "Tiff/Calliphora_palette_uncompressed.tiff";
public const string Calliphora_RgbDeflate = "Tiff/Calliphora_rgb_deflate.tiff";
public const string Calliphora_RgbJpeg = "Tiff/Calliphora_rgb_jpeg.tiff";
public const string Calliphora_RgbLzw = "Tiff/Calliphora_rgb_lzw.tiff";
public const string Calliphora_RgbPackbits = "Tiff/Calliphora_rgb_packbits.tiff";
public const string Calliphora_RgbUncompressed = "Tiff/Calliphora_rgb_uncompressed.tiff";
public const string GrayscaleDeflateMultistrip = "Tiff/grayscale_deflate_multistrip.tiff";
public const string GrayscaleUncompressed = "Tiff/grayscale_uncompressed.tiff";
public const string PaletteDeflateMultistrip = "Tiff/palette_grayscale_deflate_multistrip.tiff";
public const string PaletteUncompressed = "Tiff/palette_uncompressed.tiff";
public const string RgbDeflate = "Tiff/rgb_deflate.tiff";
public const string RgbDeflateMultistrip = "Tiff/rgb_deflate_multistrip.tiff";
public const string RgbJpeg = "Tiff/rgb_jpeg.tiff";
public const string RgbLzw = "Tiff/rgb_lzw.tiff";
public const string RgbLzwMultistrip = "Tiff/rgb_lzw_multistrip.tiff";
public const string RgbPackbits = "Tiff/rgb_packbits.tiff";
public const string RgbPackbitsMultistrip = "Tiff/rgb_packbits_multistrip.tiff";
public const string RgbUncompressed = "Tiff/rgb_uncompressed.tiff";
public const string RgbUncompressedTiled = "Tiff/rgb_uncompressed_tiled.tiff";
public const string MultiframeDifferentSizeTiled = "Tiff/multipage_ withPreview_differentSize_tiled.tiff";
public const string MultiframeLzw = "Tiff/multipage_lzw.tiff";
public const string MultiframeDeflateWithPreview = "Tiff/multipage_deflate_withPreview.tiff";
public const string MultiframeDifferentSize = "Tiff/multipage_differentSize.tiff";
public const string MultiframeDifferentVariants = "Tiff/multipage_differentVariants.tiff";
public const string SampleMetadata = "Tiff/metadata_sample.tiff";
public static readonly string[] All = { Calliphora_GrayscaleUncompressed, Calliphora_PaletteUncompressed, Calliphora_RgbDeflate, Calliphora_RgbLzw, Calliphora_RgbPackbits, Calliphora_RgbUncompressed, GrayscaleDeflateMultistrip, GrayscaleUncompressed, PaletteDeflateMultistrip, PaletteUncompressed, RgbDeflate, RgbDeflateMultistrip, /*RgbJpeg,*/ RgbLzw, RgbLzwMultistrip, RgbPackbits, RgbPackbitsMultistrip, RgbUncompressed, MultiframeLzw, /*MultiFrameDifferentVariants,*/ SampleMetadata, };
public static readonly string[] Multiframes = { MultiframeLzw, MultiframeDeflateWithPreview /*MultiFrameDifferentSize, MultiframeDifferentSizeTiled, MultiFrameDifferentVariants,*/ };
public static readonly string[] Metadata = { SampleMetadata };
public static readonly string[] NotSupported = { Calliphora_RgbJpeg, RgbJpeg, RgbUncompressedTiled, MultiframeDifferentSize, MultiframeDifferentVariants };
}
}
}

5
tests/ImageSharp.Tests/TestUtilities/TestEnvironment.Formats.cs

@ -9,6 +9,7 @@ using SixLabors.ImageSharp.Formats.Gif;
using SixLabors.ImageSharp.Formats.Jpeg;
using SixLabors.ImageSharp.Formats.Png;
using SixLabors.ImageSharp.Formats.Tga;
using SixLabors.ImageSharp.Formats.Tiff;
using SixLabors.ImageSharp.Tests.TestUtilities.ReferenceCodecs;
namespace SixLabors.ImageSharp.Tests
@ -55,7 +56,9 @@ namespace SixLabors.ImageSharp.Tests
var cfg = new Configuration(
new JpegConfigurationModule(),
new GifConfigurationModule(),
new TgaConfigurationModule());
new TgaConfigurationModule(),
new TiffConfigurationModule()
);
// Magick codecs should work on all platforms
IImageEncoder pngEncoder = IsWindows ? (IImageEncoder)SystemDrawingReferenceEncoder.Png : new PngEncoder();

69
tests/Images/Input/Tiff/Benchmarks/SixLabors.ImageSharp.Benchmarks.Codecs.DecodeTiffBig-report-github.md

@ -0,0 +1,69 @@
``` ini
BenchmarkDotNet=v0.12.1, OS=Windows 10.0.19041.450 (2004/?/20H1)
Intel Core i7-3610QM CPU 2.30GHz (Ivy Bridge), 1 CPU, 8 logical and 4 physical cores
.NET Core SDK=3.1.401
[Host] : .NET Core 3.1.7 (CoreCLR 4.700.20.36602, CoreFX 4.700.20.37001), X64 RyuJIT
Job-MTZTUC : .NET Framework 4.8 (4.8.4200.0), X64 RyuJIT
Job-BGVYTJ : .NET Core 2.1.21 (CoreCLR 4.6.29130.01, CoreFX 4.6.29130.02), X64 RyuJIT
Job-ZDUDFU : .NET Core 3.1.7 (CoreCLR 4.700.20.36602, CoreFX 4.700.20.37001), X64 RyuJIT
InvocationCount=1 IterationCount=5 LaunchCount=1
UnrollFactor=1 WarmupCount=3
```
| Method | Job | Runtime | TestImage | Mean | Error | StdDev | Ratio | RatioSD | Gen 0 | Gen 1 | Gen 2 | Allocated |
|---------------------- |----------- |-------------- |-------------------------------------------------------- |------------:|------------:|------------:|-------:|--------:|------------:|----------:|----------:|-------------:|
| **&#39;System.Drawing Tiff&#39;** | **Job-MTZTUC** | **.NET 4.7.2** | **Tiff/Benchmarks/jpeg444_big_grayscale_uncompressed.tiff** | **180.2 ms** | **15.21 ms** | **2.35 ms** | **1.00** | **0.00** | **85000.0000** | **-** | **-** | **269221840 B** |
| &#39;ImageSharp Tiff&#39; | Job-MTZTUC | .NET 4.7.2 | Tiff/Benchmarks/jpeg444_big_grayscale_uncompressed.tiff | 31,527.8 ms | 4,371.70 ms | 1,135.32 ms | 176.11 | 8.81 | 1000.0000 | 1000.0000 | 1000.0000 | 1342029912 B |
| | | | | | | | | | | | | |
| &#39;System.Drawing Tiff&#39; | Job-BGVYTJ | .NET Core 2.1 | Tiff/Benchmarks/jpeg444_big_grayscale_uncompressed.tiff | 185.5 ms | 15.88 ms | 2.46 ms | 1.00 | 0.00 | 85000.0000 | - | - | 268813936 B |
| &#39;ImageSharp Tiff&#39; | Job-BGVYTJ | .NET Core 2.1 | Tiff/Benchmarks/jpeg444_big_grayscale_uncompressed.tiff | 17,768.7 ms | 116.03 ms | 30.13 ms | 95.84 | 1.13 | 1000.0000 | 1000.0000 | 1000.0000 | 1342016464 B |
| | | | | | | | | | | | | |
| &#39;System.Drawing Tiff&#39; | Job-ZDUDFU | .NET Core 3.1 | Tiff/Benchmarks/jpeg444_big_grayscale_uncompressed.tiff | 149.9 ms | 8.23 ms | 1.27 ms | 1.00 | 0.00 | - | - | - | 176 B |
| &#39;ImageSharp Tiff&#39; | Job-ZDUDFU | .NET Core 3.1 | Tiff/Benchmarks/jpeg444_big_grayscale_uncompressed.tiff | 16,782.2 ms | 718.14 ms | 111.13 ms | 111.94 | 0.80 | 1000.0000 | 1000.0000 | 1000.0000 | 1342016440 B |
| | | | | | | | | | | | | |
| **&#39;System.Drawing Tiff&#39;** | **Job-MTZTUC** | **.NET 4.7.2** | **Tiff/Benchmarks/jpeg444_big_palette_uncompressed.tiff** | **178.0 ms** | **7.07 ms** | **1.83 ms** | **1.00** | **0.00** | **85000.0000** | **-** | **-** | **269221840 B** |
| &#39;ImageSharp Tiff&#39; | Job-MTZTUC | .NET 4.7.2 | Tiff/Benchmarks/jpeg444_big_palette_uncompressed.tiff | 33,721.9 ms | 78.03 ms | 12.08 ms | 188.96 | 1.80 | 1000.0000 | 1000.0000 | 1000.0000 | 1342023280 B |
| | | | | | | | | | | | | |
| &#39;System.Drawing Tiff&#39; | Job-BGVYTJ | .NET Core 2.1 | Tiff/Benchmarks/jpeg444_big_palette_uncompressed.tiff | 180.1 ms | 8.81 ms | 2.29 ms | 1.00 | 0.00 | 85000.0000 | - | - | 268815616 B |
| &#39;ImageSharp Tiff&#39; | Job-BGVYTJ | .NET Core 2.1 | Tiff/Benchmarks/jpeg444_big_palette_uncompressed.tiff | 22,941.4 ms | 728.12 ms | 189.09 ms | 127.37 | 1.07 | 1000.0000 | 1000.0000 | 1000.0000 | 1342022368 B |
| | | | | | | | | | | | | |
| &#39;System.Drawing Tiff&#39; | Job-ZDUDFU | .NET Core 3.1 | Tiff/Benchmarks/jpeg444_big_palette_uncompressed.tiff | 145.5 ms | 3.20 ms | 0.50 ms | 1.00 | 0.00 | - | - | - | 176 B |
| &#39;ImageSharp Tiff&#39; | Job-ZDUDFU | .NET Core 3.1 | Tiff/Benchmarks/jpeg444_big_palette_uncompressed.tiff | 21,485.0 ms | 711.10 ms | 184.67 ms | 148.04 | 0.66 | 1000.0000 | 1000.0000 | 1000.0000 | 1342025632 B |
| | | | | | | | | | | | | |
| **&#39;System.Drawing Tiff&#39;** | **Job-MTZTUC** | **.NET 4.7.2** | **Tiff/Benchmarks/jpeg444_big_rgb_deflate.tiff** | **2,518.2 ms** | **76.22 ms** | **19.79 ms** | **1.00** | **0.00** | **6000.0000** | **-** | **-** | **29598616 B** |
| &#39;ImageSharp Tiff&#39; | Job-MTZTUC | .NET 4.7.2 | Tiff/Benchmarks/jpeg444_big_rgb_deflate.tiff | 29,327.2 ms | 102.72 ms | 26.68 ms | 11.65 | 0.10 | 1000.0000 | 1000.0000 | 1000.0000 | 1124088224 B |
| | | | | | | | | | | | | |
| &#39;System.Drawing Tiff&#39; | Job-BGVYTJ | .NET Core 2.1 | Tiff/Benchmarks/jpeg444_big_rgb_deflate.tiff | 2,500.3 ms | 67.24 ms | 10.41 ms | 1.00 | 0.00 | 6000.0000 | - | - | 29528752 B |
| &#39;ImageSharp Tiff&#39; | Job-BGVYTJ | .NET Core 2.1 | Tiff/Benchmarks/jpeg444_big_rgb_deflate.tiff | 18,974.7 ms | 199.58 ms | 30.89 ms | 7.59 | 0.04 | 1000.0000 | 1000.0000 | 1000.0000 | 1123947608 B |
| | | | | | | | | | | | | |
| &#39;System.Drawing Tiff&#39; | Job-ZDUDFU | .NET Core 3.1 | Tiff/Benchmarks/jpeg444_big_rgb_deflate.tiff | 2,541.1 ms | 21.36 ms | 5.55 ms | 1.00 | 0.00 | - | - | - | 176 B |
| &#39;ImageSharp Tiff&#39; | Job-ZDUDFU | .NET Core 3.1 | Tiff/Benchmarks/jpeg444_big_rgb_deflate.tiff | 17,974.8 ms | 751.73 ms | 116.33 ms | 7.07 | 0.04 | 1000.0000 | 1000.0000 | 1000.0000 | 1123949960 B |
| | | | | | | | | | | | | |
| **&#39;System.Drawing Tiff&#39;** | **Job-MTZTUC** | **.NET 4.7.2** | **Tiff/Benchmarks/jpeg444_big_rgb_lzw.tiff** | **3,368.4 ms** | **40.71 ms** | **6.30 ms** | **1.00** | **0.00** | **4000.0000** | **-** | **-** | **22835824 B** |
| &#39;ImageSharp Tiff&#39; | Job-MTZTUC | .NET 4.7.2 | Tiff/Benchmarks/jpeg444_big_rgb_lzw.tiff | 28,919.9 ms | 705.58 ms | 183.24 ms | 8.57 | 0.04 | 1000.0000 | 1000.0000 | 1000.0000 | 1123956384 B |
| | | | | | | | | | | | | |
| &#39;System.Drawing Tiff&#39; | Job-BGVYTJ | .NET Core 2.1 | Tiff/Benchmarks/jpeg444_big_rgb_lzw.tiff | 3,365.1 ms | 36.93 ms | 5.72 ms | 1.00 | 0.00 | 4000.0000 | - | - | 22789840 B |
| &#39;ImageSharp Tiff&#39; | Job-BGVYTJ | .NET Core 2.1 | Tiff/Benchmarks/jpeg444_big_rgb_lzw.tiff | 17,905.1 ms | 40.08 ms | 10.41 ms | 5.32 | 0.01 | 1000.0000 | 1000.0000 | 1000.0000 | 1123949072 B |
| | | | | | | | | | | | | |
| &#39;System.Drawing Tiff&#39; | Job-ZDUDFU | .NET Core 3.1 | Tiff/Benchmarks/jpeg444_big_rgb_lzw.tiff | 3,377.6 ms | 125.36 ms | 32.56 ms | 1.00 | 0.00 | - | - | - | 176 B |
| &#39;ImageSharp Tiff&#39; | Job-ZDUDFU | .NET Core 3.1 | Tiff/Benchmarks/jpeg444_big_rgb_lzw.tiff | 16,998.0 ms | 460.59 ms | 119.61 ms | 5.03 | 0.07 | 1000.0000 | 1000.0000 | 1000.0000 | 1123952144 B |
| | | | | | | | | | | | | |
| **&#39;System.Drawing Tiff&#39;** | **Job-MTZTUC** | **.NET 4.7.2** | **Tiff/Benchmarks/jpeg444_big_rgb_packbits.tiff** | **1,849.3 ms** | **43.52 ms** | **11.30 ms** | **1.00** | **0.00** | **255000.0000** | **-** | **-** | **812350880 B** |
| &#39;ImageSharp Tiff&#39; | Job-MTZTUC | .NET 4.7.2 | Tiff/Benchmarks/jpeg444_big_rgb_packbits.tiff | 29,360.0 ms | 157.78 ms | 40.98 ms | 15.88 | 0.12 | - | - | - | 2690323752 B |
| | | | | | | | | | | | | |
| &#39;System.Drawing Tiff&#39; | Job-BGVYTJ | .NET Core 2.1 | Tiff/Benchmarks/jpeg444_big_rgb_packbits.tiff | 1,882.7 ms | 64.85 ms | 16.84 ms | 1.00 | 0.00 | 255000.0000 | - | - | 811943568 B |
| &#39;ImageSharp Tiff&#39; | Job-BGVYTJ | .NET Core 2.1 | Tiff/Benchmarks/jpeg444_big_rgb_packbits.tiff | 18,967.7 ms | 445.86 ms | 115.79 ms | 10.08 | 0.09 | - | - | - | 2690318648 B |
| | | | | | | | | | | | | |
| &#39;System.Drawing Tiff&#39; | Job-ZDUDFU | .NET Core 3.1 | Tiff/Benchmarks/jpeg444_big_rgb_packbits.tiff | 1,743.2 ms | 78.50 ms | 20.39 ms | 1.00 | 0.00 | - | - | - | 176 B |
| &#39;ImageSharp Tiff&#39; | Job-ZDUDFU | .NET Core 3.1 | Tiff/Benchmarks/jpeg444_big_rgb_packbits.tiff | 17,379.6 ms | 243.53 ms | 63.24 ms | 9.97 | 0.10 | - | - | - | 2690321912 B |
| | | | | | | | | | | | | |
| **&#39;System.Drawing Tiff&#39;** | **Job-MTZTUC** | **.NET 4.7.2** | **Tiff/Benchmarks/jpeg444_big_rgb_uncompressed.tiff** | **758.5 ms** | **9.75 ms** | **2.53 ms** | **1.00** | **0.00** | **255000.0000** | **-** | **-** | **806059984 B** |
| &#39;ImageSharp Tiff&#39; | Job-MTZTUC | .NET 4.7.2 | Tiff/Benchmarks/jpeg444_big_rgb_uncompressed.tiff | 29,198.2 ms | 677.81 ms | 176.03 ms | 38.50 | 0.19 | - | - | - | 1878827096 B |
| | | | | | | | | | | | | |
| &#39;System.Drawing Tiff&#39; | Job-BGVYTJ | .NET Core 2.1 | Tiff/Benchmarks/jpeg444_big_rgb_uncompressed.tiff | 760.1 ms | 15.95 ms | 2.47 ms | 1.00 | 0.00 | 255000.0000 | - | - | 805652192 B |
| &#39;ImageSharp Tiff&#39; | Job-BGVYTJ | .NET Core 2.1 | Tiff/Benchmarks/jpeg444_big_rgb_uncompressed.tiff | 18,457.2 ms | 35.60 ms | 5.51 ms | 24.28 | 0.08 | - | - | - | 1878821992 B |
| | | | | | | | | | | | | |
| &#39;System.Drawing Tiff&#39; | Job-ZDUDFU | .NET Core 3.1 | Tiff/Benchmarks/jpeg444_big_rgb_uncompressed.tiff | 629.5 ms | 11.40 ms | 2.96 ms | 1.00 | 0.00 | - | - | - | 176 B |
| &#39;ImageSharp Tiff&#39; | Job-ZDUDFU | .NET Core 3.1 | Tiff/Benchmarks/jpeg444_big_rgb_uncompressed.tiff | 17,579.8 ms | 371.72 ms | 96.54 ms | 27.93 | 0.11 | - | - | - | 1878825256 B |

69
tests/Images/Input/Tiff/Benchmarks/SixLabors.ImageSharp.Benchmarks.Codecs.DecodeTiffBig-report.html

@ -0,0 +1,69 @@
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8' />
<title>SixLabors.ImageSharp.Benchmarks.Codecs.DecodeTiffBig-20200824-095044</title>
<style type="text/css">
table { border-collapse: collapse; display: block; width: 100%; overflow: auto; }
td, th { padding: 6px 13px; border: 1px solid #ddd; text-align: right; }
tr { background-color: #fff; border-top: 1px solid #ccc; }
tr:nth-child(even) { background: #f8f8f8; }
</style>
</head>
<body>
<pre><code>
BenchmarkDotNet=v0.12.1, OS=Windows 10.0.19041.450 (2004/?/20H1)
Intel Core i7-3610QM CPU 2.30GHz (Ivy Bridge), 1 CPU, 8 logical and 4 physical cores
.NET Core SDK=3.1.401
[Host] : .NET Core 3.1.7 (CoreCLR 4.700.20.36602, CoreFX 4.700.20.37001), X64 RyuJIT
Job-MTZTUC : .NET Framework 4.8 (4.8.4200.0), X64 RyuJIT
Job-BGVYTJ : .NET Core 2.1.21 (CoreCLR 4.6.29130.01, CoreFX 4.6.29130.02), X64 RyuJIT
Job-ZDUDFU : .NET Core 3.1.7 (CoreCLR 4.700.20.36602, CoreFX 4.700.20.37001), X64 RyuJIT
</code></pre>
<pre><code>InvocationCount=1 IterationCount=5 LaunchCount=1
UnrollFactor=1 WarmupCount=3
</code></pre>
<table>
<thead><tr><th> Method</th><th> Job</th><th>Runtime</th><th> TestImage</th><th> Mean</th><th>Error</th><th>StdDev</th><th>Ratio</th><th>RatioSD</th><th>Gen 0</th><th>Gen 1</th><th>Gen 2</th><th>Allocated</th>
</tr>
</thead><tbody><tr><td>&#39;System.Drawing Tiff&#39;</td><td>Job-MTZTUC</td><td>.NET 4.7.2</td><td>Tiff/Benchmarks/jpeg444_big_grayscale_uncompressed.tiff</td><td>180.2 ms</td><td>15.21 ms</td><td>2.35 ms</td><td>1.00</td><td>0.00</td><td>85000.0000</td><td>-</td><td>-</td><td>269221840 B</td>
</tr><tr><td>&#39;ImageSharp Tiff&#39;</td><td>Job-MTZTUC</td><td>.NET 4.7.2</td><td>Tiff/Benchmarks/jpeg444_big_grayscale_uncompressed.tiff</td><td>31,527.8 ms</td><td>4,371.70 ms</td><td>1,135.32 ms</td><td>176.11</td><td>8.81</td><td>1000.0000</td><td>1000.0000</td><td>1000.0000</td><td>1342029912 B</td>
</tr><tr><td>&#39;System.Drawing Tiff&#39;</td><td>Job-BGVYTJ</td><td>.NET Core 2.1</td><td>Tiff/Benchmarks/jpeg444_big_grayscale_uncompressed.tiff</td><td>185.5 ms</td><td>15.88 ms</td><td>2.46 ms</td><td>1.00</td><td>0.00</td><td>85000.0000</td><td>-</td><td>-</td><td>268813936 B</td>
</tr><tr><td>&#39;ImageSharp Tiff&#39;</td><td>Job-BGVYTJ</td><td>.NET Core 2.1</td><td>Tiff/Benchmarks/jpeg444_big_grayscale_uncompressed.tiff</td><td>17,768.7 ms</td><td>116.03 ms</td><td>30.13 ms</td><td>95.84</td><td>1.13</td><td>1000.0000</td><td>1000.0000</td><td>1000.0000</td><td>1342016464 B</td>
</tr><tr><td>&#39;System.Drawing Tiff&#39;</td><td>Job-ZDUDFU</td><td>.NET Core 3.1</td><td>Tiff/Benchmarks/jpeg444_big_grayscale_uncompressed.tiff</td><td>149.9 ms</td><td>8.23 ms</td><td>1.27 ms</td><td>1.00</td><td>0.00</td><td>-</td><td>-</td><td>-</td><td>176 B</td>
</tr><tr><td>&#39;ImageSharp Tiff&#39;</td><td>Job-ZDUDFU</td><td>.NET Core 3.1</td><td>Tiff/Benchmarks/jpeg444_big_grayscale_uncompressed.tiff</td><td>16,782.2 ms</td><td>718.14 ms</td><td>111.13 ms</td><td>111.94</td><td>0.80</td><td>1000.0000</td><td>1000.0000</td><td>1000.0000</td><td>1342016440 B</td>
</tr><tr><td>&#39;System.Drawing Tiff&#39;</td><td>Job-MTZTUC</td><td>.NET 4.7.2</td><td>Tiff/Benchmarks/jpeg444_big_palette_uncompressed.tiff</td><td>178.0 ms</td><td>7.07 ms</td><td>1.83 ms</td><td>1.00</td><td>0.00</td><td>85000.0000</td><td>-</td><td>-</td><td>269221840 B</td>
</tr><tr><td>&#39;ImageSharp Tiff&#39;</td><td>Job-MTZTUC</td><td>.NET 4.7.2</td><td>Tiff/Benchmarks/jpeg444_big_palette_uncompressed.tiff</td><td>33,721.9 ms</td><td>78.03 ms</td><td>12.08 ms</td><td>188.96</td><td>1.80</td><td>1000.0000</td><td>1000.0000</td><td>1000.0000</td><td>1342023280 B</td>
</tr><tr><td>&#39;System.Drawing Tiff&#39;</td><td>Job-BGVYTJ</td><td>.NET Core 2.1</td><td>Tiff/Benchmarks/jpeg444_big_palette_uncompressed.tiff</td><td>180.1 ms</td><td>8.81 ms</td><td>2.29 ms</td><td>1.00</td><td>0.00</td><td>85000.0000</td><td>-</td><td>-</td><td>268815616 B</td>
</tr><tr><td>&#39;ImageSharp Tiff&#39;</td><td>Job-BGVYTJ</td><td>.NET Core 2.1</td><td>Tiff/Benchmarks/jpeg444_big_palette_uncompressed.tiff</td><td>22,941.4 ms</td><td>728.12 ms</td><td>189.09 ms</td><td>127.37</td><td>1.07</td><td>1000.0000</td><td>1000.0000</td><td>1000.0000</td><td>1342022368 B</td>
</tr><tr><td>&#39;System.Drawing Tiff&#39;</td><td>Job-ZDUDFU</td><td>.NET Core 3.1</td><td>Tiff/Benchmarks/jpeg444_big_palette_uncompressed.tiff</td><td>145.5 ms</td><td>3.20 ms</td><td>0.50 ms</td><td>1.00</td><td>0.00</td><td>-</td><td>-</td><td>-</td><td>176 B</td>
</tr><tr><td>&#39;ImageSharp Tiff&#39;</td><td>Job-ZDUDFU</td><td>.NET Core 3.1</td><td>Tiff/Benchmarks/jpeg444_big_palette_uncompressed.tiff</td><td>21,485.0 ms</td><td>711.10 ms</td><td>184.67 ms</td><td>148.04</td><td>0.66</td><td>1000.0000</td><td>1000.0000</td><td>1000.0000</td><td>1342025632 B</td>
</tr><tr><td>&#39;System.Drawing Tiff&#39;</td><td>Job-MTZTUC</td><td>.NET 4.7.2</td><td>Tiff/Benchmarks/jpeg444_big_rgb_deflate.tiff</td><td>2,518.2 ms</td><td>76.22 ms</td><td>19.79 ms</td><td>1.00</td><td>0.00</td><td>6000.0000</td><td>-</td><td>-</td><td>29598616 B</td>
</tr><tr><td>&#39;ImageSharp Tiff&#39;</td><td>Job-MTZTUC</td><td>.NET 4.7.2</td><td>Tiff/Benchmarks/jpeg444_big_rgb_deflate.tiff</td><td>29,327.2 ms</td><td>102.72 ms</td><td>26.68 ms</td><td>11.65</td><td>0.10</td><td>1000.0000</td><td>1000.0000</td><td>1000.0000</td><td>1124088224 B</td>
</tr><tr><td>&#39;System.Drawing Tiff&#39;</td><td>Job-BGVYTJ</td><td>.NET Core 2.1</td><td>Tiff/Benchmarks/jpeg444_big_rgb_deflate.tiff</td><td>2,500.3 ms</td><td>67.24 ms</td><td>10.41 ms</td><td>1.00</td><td>0.00</td><td>6000.0000</td><td>-</td><td>-</td><td>29528752 B</td>
</tr><tr><td>&#39;ImageSharp Tiff&#39;</td><td>Job-BGVYTJ</td><td>.NET Core 2.1</td><td>Tiff/Benchmarks/jpeg444_big_rgb_deflate.tiff</td><td>18,974.7 ms</td><td>199.58 ms</td><td>30.89 ms</td><td>7.59</td><td>0.04</td><td>1000.0000</td><td>1000.0000</td><td>1000.0000</td><td>1123947608 B</td>
</tr><tr><td>&#39;System.Drawing Tiff&#39;</td><td>Job-ZDUDFU</td><td>.NET Core 3.1</td><td>Tiff/Benchmarks/jpeg444_big_rgb_deflate.tiff</td><td>2,541.1 ms</td><td>21.36 ms</td><td>5.55 ms</td><td>1.00</td><td>0.00</td><td>-</td><td>-</td><td>-</td><td>176 B</td>
</tr><tr><td>&#39;ImageSharp Tiff&#39;</td><td>Job-ZDUDFU</td><td>.NET Core 3.1</td><td>Tiff/Benchmarks/jpeg444_big_rgb_deflate.tiff</td><td>17,974.8 ms</td><td>751.73 ms</td><td>116.33 ms</td><td>7.07</td><td>0.04</td><td>1000.0000</td><td>1000.0000</td><td>1000.0000</td><td>1123949960 B</td>
</tr><tr><td>&#39;System.Drawing Tiff&#39;</td><td>Job-MTZTUC</td><td>.NET 4.7.2</td><td>Tiff/Benchmarks/jpeg444_big_rgb_lzw.tiff</td><td>3,368.4 ms</td><td>40.71 ms</td><td>6.30 ms</td><td>1.00</td><td>0.00</td><td>4000.0000</td><td>-</td><td>-</td><td>22835824 B</td>
</tr><tr><td>&#39;ImageSharp Tiff&#39;</td><td>Job-MTZTUC</td><td>.NET 4.7.2</td><td>Tiff/Benchmarks/jpeg444_big_rgb_lzw.tiff</td><td>28,919.9 ms</td><td>705.58 ms</td><td>183.24 ms</td><td>8.57</td><td>0.04</td><td>1000.0000</td><td>1000.0000</td><td>1000.0000</td><td>1123956384 B</td>
</tr><tr><td>&#39;System.Drawing Tiff&#39;</td><td>Job-BGVYTJ</td><td>.NET Core 2.1</td><td>Tiff/Benchmarks/jpeg444_big_rgb_lzw.tiff</td><td>3,365.1 ms</td><td>36.93 ms</td><td>5.72 ms</td><td>1.00</td><td>0.00</td><td>4000.0000</td><td>-</td><td>-</td><td>22789840 B</td>
</tr><tr><td>&#39;ImageSharp Tiff&#39;</td><td>Job-BGVYTJ</td><td>.NET Core 2.1</td><td>Tiff/Benchmarks/jpeg444_big_rgb_lzw.tiff</td><td>17,905.1 ms</td><td>40.08 ms</td><td>10.41 ms</td><td>5.32</td><td>0.01</td><td>1000.0000</td><td>1000.0000</td><td>1000.0000</td><td>1123949072 B</td>
</tr><tr><td>&#39;System.Drawing Tiff&#39;</td><td>Job-ZDUDFU</td><td>.NET Core 3.1</td><td>Tiff/Benchmarks/jpeg444_big_rgb_lzw.tiff</td><td>3,377.6 ms</td><td>125.36 ms</td><td>32.56 ms</td><td>1.00</td><td>0.00</td><td>-</td><td>-</td><td>-</td><td>176 B</td>
</tr><tr><td>&#39;ImageSharp Tiff&#39;</td><td>Job-ZDUDFU</td><td>.NET Core 3.1</td><td>Tiff/Benchmarks/jpeg444_big_rgb_lzw.tiff</td><td>16,998.0 ms</td><td>460.59 ms</td><td>119.61 ms</td><td>5.03</td><td>0.07</td><td>1000.0000</td><td>1000.0000</td><td>1000.0000</td><td>1123952144 B</td>
</tr><tr><td>&#39;System.Drawing Tiff&#39;</td><td>Job-MTZTUC</td><td>.NET 4.7.2</td><td>Tiff/Benchmarks/jpeg444_big_rgb_packbits.tiff</td><td>1,849.3 ms</td><td>43.52 ms</td><td>11.30 ms</td><td>1.00</td><td>0.00</td><td>255000.0000</td><td>-</td><td>-</td><td>812350880 B</td>
</tr><tr><td>&#39;ImageSharp Tiff&#39;</td><td>Job-MTZTUC</td><td>.NET 4.7.2</td><td>Tiff/Benchmarks/jpeg444_big_rgb_packbits.tiff</td><td>29,360.0 ms</td><td>157.78 ms</td><td>40.98 ms</td><td>15.88</td><td>0.12</td><td>-</td><td>-</td><td>-</td><td>2690323752 B</td>
</tr><tr><td>&#39;System.Drawing Tiff&#39;</td><td>Job-BGVYTJ</td><td>.NET Core 2.1</td><td>Tiff/Benchmarks/jpeg444_big_rgb_packbits.tiff</td><td>1,882.7 ms</td><td>64.85 ms</td><td>16.84 ms</td><td>1.00</td><td>0.00</td><td>255000.0000</td><td>-</td><td>-</td><td>811943568 B</td>
</tr><tr><td>&#39;ImageSharp Tiff&#39;</td><td>Job-BGVYTJ</td><td>.NET Core 2.1</td><td>Tiff/Benchmarks/jpeg444_big_rgb_packbits.tiff</td><td>18,967.7 ms</td><td>445.86 ms</td><td>115.79 ms</td><td>10.08</td><td>0.09</td><td>-</td><td>-</td><td>-</td><td>2690318648 B</td>
</tr><tr><td>&#39;System.Drawing Tiff&#39;</td><td>Job-ZDUDFU</td><td>.NET Core 3.1</td><td>Tiff/Benchmarks/jpeg444_big_rgb_packbits.tiff</td><td>1,743.2 ms</td><td>78.50 ms</td><td>20.39 ms</td><td>1.00</td><td>0.00</td><td>-</td><td>-</td><td>-</td><td>176 B</td>
</tr><tr><td>&#39;ImageSharp Tiff&#39;</td><td>Job-ZDUDFU</td><td>.NET Core 3.1</td><td>Tiff/Benchmarks/jpeg444_big_rgb_packbits.tiff</td><td>17,379.6 ms</td><td>243.53 ms</td><td>63.24 ms</td><td>9.97</td><td>0.10</td><td>-</td><td>-</td><td>-</td><td>2690321912 B</td>
</tr><tr><td>&#39;System.Drawing Tiff&#39;</td><td>Job-MTZTUC</td><td>.NET 4.7.2</td><td>Tiff/Benchmarks/jpeg444_big_rgb_uncompressed.tiff</td><td>758.5 ms</td><td>9.75 ms</td><td>2.53 ms</td><td>1.00</td><td>0.00</td><td>255000.0000</td><td>-</td><td>-</td><td>806059984 B</td>
</tr><tr><td>&#39;ImageSharp Tiff&#39;</td><td>Job-MTZTUC</td><td>.NET 4.7.2</td><td>Tiff/Benchmarks/jpeg444_big_rgb_uncompressed.tiff</td><td>29,198.2 ms</td><td>677.81 ms</td><td>176.03 ms</td><td>38.50</td><td>0.19</td><td>-</td><td>-</td><td>-</td><td>1878827096 B</td>
</tr><tr><td>&#39;System.Drawing Tiff&#39;</td><td>Job-BGVYTJ</td><td>.NET Core 2.1</td><td>Tiff/Benchmarks/jpeg444_big_rgb_uncompressed.tiff</td><td>760.1 ms</td><td>15.95 ms</td><td>2.47 ms</td><td>1.00</td><td>0.00</td><td>255000.0000</td><td>-</td><td>-</td><td>805652192 B</td>
</tr><tr><td>&#39;ImageSharp Tiff&#39;</td><td>Job-BGVYTJ</td><td>.NET Core 2.1</td><td>Tiff/Benchmarks/jpeg444_big_rgb_uncompressed.tiff</td><td>18,457.2 ms</td><td>35.60 ms</td><td>5.51 ms</td><td>24.28</td><td>0.08</td><td>-</td><td>-</td><td>-</td><td>1878821992 B</td>
</tr><tr><td>&#39;System.Drawing Tiff&#39;</td><td>Job-ZDUDFU</td><td>.NET Core 3.1</td><td>Tiff/Benchmarks/jpeg444_big_rgb_uncompressed.tiff</td><td>629.5 ms</td><td>11.40 ms</td><td>2.96 ms</td><td>1.00</td><td>0.00</td><td>-</td><td>-</td><td>-</td><td>176 B</td>
</tr><tr><td>&#39;ImageSharp Tiff&#39;</td><td>Job-ZDUDFU</td><td>.NET Core 3.1</td><td>Tiff/Benchmarks/jpeg444_big_rgb_uncompressed.tiff</td><td>17,579.8 ms</td><td>371.72 ms</td><td>96.54 ms</td><td>27.93</td><td>0.11</td><td>-</td><td>-</td><td>-</td><td>1878825256 B</td>
</tr></tbody></table>
</body>
</html>

2
tests/Images/Input/Tiff/Benchmarks/gen.bat

@ -0,0 +1,2 @@
powershell -executionpolicy RemoteSigned -file gen_big.ps1
powershell -executionpolicy RemoteSigned -file gen_medium.ps1

12
tests/Images/Input/Tiff/Benchmarks/gen_big.ps1

@ -0,0 +1,12 @@
$Gm_Exe = "C:\Program Files\ImageMagick-7.0.8-Q16\magick.exe"
$Source_Image = ".\jpeg444_big.jpg"
$Output_Prefix = ".\jpeg444_big"
& $Gm_Exe convert $Source_Image -compress None -type TrueColor $Output_Prefix"_rgb_uncompressed.tiff"
& $Gm_Exe convert $Source_Image -compress LZW -type TrueColor $Output_Prefix"_rgb_lzw.tiff"
& $Gm_Exe convert $Source_Image -compress RLE -type TrueColor $Output_Prefix"_rgb_packbits.tiff"
& $Gm_Exe convert $Source_Image -compress JPEG -type TrueColor $Output_Prefix"_rgb_jpeg.tiff"
& $Gm_Exe convert $Source_Image -compress Zip -type TrueColor $Output_Prefix"_rgb_deflate.tiff"
& $Gm_Exe convert $Source_Image -compress None -type Grayscale $Output_Prefix"_grayscale_uncompressed.tiff"
& $Gm_Exe convert $Source_Image -compress None -colors 256 $Output_Prefix"_palette_uncompressed.tiff"

12
tests/Images/Input/Tiff/Benchmarks/gen_medium.ps1

@ -0,0 +1,12 @@
$Gm_Exe = "C:\Program Files\ImageMagick-7.0.8-Q16\magick.exe"
$Source_Image = ".\jpeg444_medium.jpg"
$Output_Prefix = ".\jpeg444_medium"
& $Gm_Exe convert $Source_Image -compress None -type TrueColor $Output_Prefix"_rgb_uncompressed.tiff"
& $Gm_Exe convert $Source_Image -compress LZW -type TrueColor $Output_Prefix"_rgb_lzw.tiff"
& $Gm_Exe convert $Source_Image -compress RLE -type TrueColor $Output_Prefix"_rgb_packbits.tiff"
& $Gm_Exe convert $Source_Image -compress JPEG -type TrueColor $Output_Prefix"_rgb_jpeg.tiff"
& $Gm_Exe convert $Source_Image -compress Zip -type TrueColor $Output_Prefix"_rgb_deflate.tiff"
& $Gm_Exe convert $Source_Image -compress None -type Grayscale $Output_Prefix"_grayscale_uncompressed.tiff"
& $Gm_Exe convert $Source_Image -compress None -colors 256 $Output_Prefix"_palette_uncompressed.tiff"

0
tests/ImageSharp.Tests/TestImages/Formats/Tiff/genimages.ps1 → tests/Images/Input/Tiff/Benchmarks/genimages.ps1

3
tests/Images/Input/Tiff/Benchmarks/jpeg444.jpg

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

3
tests/Images/Input/Tiff/Benchmarks/jpeg444_big.jpg

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

3
tests/Images/Input/Tiff/Benchmarks/jpeg444_medium.jpg

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

0
tests/ImageSharp.Tests/TestImages/Formats/Tiff/Calliphora_grayscale_uncompressed.tiff → tests/Images/Input/Tiff/Calliphora_grayscale_uncompressed.tiff

0
tests/ImageSharp.Tests/TestImages/Formats/Tiff/Calliphora_palette_uncompressed.tiff → tests/Images/Input/Tiff/Calliphora_palette_uncompressed.tiff

0
tests/ImageSharp.Tests/TestImages/Formats/Tiff/Calliphora_rgb_deflate.tiff → tests/Images/Input/Tiff/Calliphora_rgb_deflate.tiff

0
tests/ImageSharp.Tests/TestImages/Formats/Tiff/Calliphora_rgb_jpeg.tiff → tests/Images/Input/Tiff/Calliphora_rgb_jpeg.tiff

0
tests/ImageSharp.Tests/TestImages/Formats/Tiff/Calliphora_rgb_lzw.tiff → tests/Images/Input/Tiff/Calliphora_rgb_lzw.tiff

0
tests/ImageSharp.Tests/TestImages/Formats/Tiff/Calliphora_rgb_packbits.tiff → tests/Images/Input/Tiff/Calliphora_rgb_packbits.tiff

0
tests/ImageSharp.Tests/TestImages/Formats/Tiff/Calliphora_rgb_uncompressed.tiff → tests/Images/Input/Tiff/Calliphora_rgb_uncompressed.tiff

3
tests/Images/Input/Tiff/grayscale_deflate_multistrip.tiff

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

3
tests/Images/Input/Tiff/grayscale_uncompressed.tiff

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

3
tests/Images/Input/Tiff/issues/net472/Decode_Rgba32_Calliphora_rgb_deflate.png

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

3
tests/Images/Input/Tiff/issues/net472/Decode_Rgba32_Calliphora_rgb_lzw.png

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

3
tests/Images/Input/Tiff/issues/net472/Decode_Rgba32_metadata_sample.png

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

3
tests/Images/Input/Tiff/issues/net472/Decode_Rgba32_multipage_lzw.png

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

3
tests/Images/Input/Tiff/issues/net472/Decode_Rgba32_rgb_deflate.png

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

3
tests/Images/Input/Tiff/issues/net472/Decode_Rgba32_rgb_lzw_multistrip.png

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

3
tests/Images/Input/Tiff/issues/netcoreapp2.1/Decode_Rgba32_Calliphora_rgb_deflate.png

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

3
tests/Images/Input/Tiff/issues/netcoreapp2.1/Decode_Rgba32_Calliphora_rgb_lzw.png

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

3
tests/Images/Input/Tiff/issues/netcoreapp2.1/Decode_Rgba32_metadata_sample.png

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

3
tests/Images/Input/Tiff/issues/netcoreapp2.1/Decode_Rgba32_multipage_lzw.png

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

3
tests/Images/Input/Tiff/issues/netcoreapp2.1/Decode_Rgba32_rgb_deflate.png

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

3
tests/Images/Input/Tiff/issues/netcoreapp2.1/Decode_Rgba32_rgb_lzw_multistrip.png

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

3
tests/Images/Input/Tiff/issues/netcoreapp3.1/Decode_Rgba32_Calliphora_rgb_deflate.png

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

3
tests/Images/Input/Tiff/issues/netcoreapp3.1/Decode_Rgba32_Calliphora_rgb_lzw.png

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

3
tests/Images/Input/Tiff/issues/netcoreapp3.1/Decode_Rgba32_metadata_sample.png

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

3
tests/Images/Input/Tiff/issues/netcoreapp3.1/Decode_Rgba32_multipage_lzw.png

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

3
tests/Images/Input/Tiff/issues/netcoreapp3.1/Decode_Rgba32_rgb_deflate.png

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

3
tests/Images/Input/Tiff/issues/netcoreapp3.1/Decode_Rgba32_rgb_lzw.png

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

3
tests/Images/Input/Tiff/issues/netcoreapp3.1/Decode_Rgba32_rgb_lzw_multistrip.png

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

2
tests/Images/Input/Tiff/issues/readme.md

@ -0,0 +1,2 @@
SixLabors.ImageSharp.Tests.Formats.Tiff.TiffDecoderTests.Decode
damaged output files

3
tests/Images/Input/Tiff/metadata_sample.tiff

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

3
tests/Images/Input/Tiff/multipage_ withPreview_differentSize_tiled.tiff

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

3
tests/Images/Input/Tiff/multipage_deflate_withPreview.tiff

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

3
tests/Images/Input/Tiff/multipage_differentSize.tiff

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

3
tests/Images/Input/Tiff/multipage_differentVariants.tiff

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

3
tests/Images/Input/Tiff/multipage_lzw.tiff

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

3
tests/Images/Input/Tiff/palette_grayscale_deflate_multistrip.tiff

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

3
tests/Images/Input/Tiff/palette_uncompressed.tiff

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

3
tests/Images/Input/Tiff/rgb_deflate.tiff

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

3
tests/Images/Input/Tiff/rgb_deflate_multistrip.tiff

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

3
tests/Images/Input/Tiff/rgb_jpeg.tiff

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

3
tests/Images/Input/Tiff/rgb_lzw.tiff

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

3
tests/Images/Input/Tiff/rgb_lzw_multistrip.tiff

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

3
tests/Images/Input/Tiff/rgb_packbits.tiff

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

3
tests/Images/Input/Tiff/rgb_packbits_multistrip.tiff

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

3
tests/Images/Input/Tiff/rgb_uncompressed.tiff

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

3
tests/Images/Input/Tiff/rgb_uncompressed_tiled.tiff

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:165d85d8e3be6b44309855474c73ae6c14267393945d287fc20be4fcadc0e3f3
size 3337
Loading…
Cancel
Save