Browse Source

Add Tiff to configurations.

Implement simple unit-tests for Tiff decoder, add test files.
Add benchmarks.
Report decoder bugs.
pull/1330/head
Ildar Khayrutdinov 7 years ago
parent
commit
94ffbd7c76
  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. BIN
      tests/Images/Input/Tiff/Benchmarks/jpeg444.jpg
  18. BIN
      tests/Images/Input/Tiff/Benchmarks/jpeg444_big.jpg
  19. BIN
      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. BIN
      tests/Images/Input/Tiff/grayscale_deflate_multistrip.tiff
  28. BIN
      tests/Images/Input/Tiff/grayscale_uncompressed.tiff
  29. BIN
      tests/Images/Input/Tiff/issues/net472/Decode_Rgba32_Calliphora_rgb_deflate.png
  30. BIN
      tests/Images/Input/Tiff/issues/net472/Decode_Rgba32_Calliphora_rgb_lzw.png
  31. BIN
      tests/Images/Input/Tiff/issues/net472/Decode_Rgba32_metadata_sample.png
  32. BIN
      tests/Images/Input/Tiff/issues/net472/Decode_Rgba32_multipage_lzw.png
  33. BIN
      tests/Images/Input/Tiff/issues/net472/Decode_Rgba32_rgb_deflate.png
  34. BIN
      tests/Images/Input/Tiff/issues/net472/Decode_Rgba32_rgb_lzw_multistrip.png
  35. BIN
      tests/Images/Input/Tiff/issues/netcoreapp2.1/Decode_Rgba32_Calliphora_rgb_deflate.png
  36. BIN
      tests/Images/Input/Tiff/issues/netcoreapp2.1/Decode_Rgba32_Calliphora_rgb_lzw.png
  37. BIN
      tests/Images/Input/Tiff/issues/netcoreapp2.1/Decode_Rgba32_metadata_sample.png
  38. BIN
      tests/Images/Input/Tiff/issues/netcoreapp2.1/Decode_Rgba32_multipage_lzw.png
  39. BIN
      tests/Images/Input/Tiff/issues/netcoreapp2.1/Decode_Rgba32_rgb_deflate.png
  40. BIN
      tests/Images/Input/Tiff/issues/netcoreapp2.1/Decode_Rgba32_rgb_lzw_multistrip.png
  41. BIN
      tests/Images/Input/Tiff/issues/netcoreapp3.1/Decode_Rgba32_Calliphora_rgb_deflate.png
  42. BIN
      tests/Images/Input/Tiff/issues/netcoreapp3.1/Decode_Rgba32_Calliphora_rgb_lzw.png
  43. BIN
      tests/Images/Input/Tiff/issues/netcoreapp3.1/Decode_Rgba32_metadata_sample.png
  44. BIN
      tests/Images/Input/Tiff/issues/netcoreapp3.1/Decode_Rgba32_multipage_lzw.png
  45. BIN
      tests/Images/Input/Tiff/issues/netcoreapp3.1/Decode_Rgba32_rgb_deflate.png
  46. BIN
      tests/Images/Input/Tiff/issues/netcoreapp3.1/Decode_Rgba32_rgb_lzw.png
  47. BIN
      tests/Images/Input/Tiff/issues/netcoreapp3.1/Decode_Rgba32_rgb_lzw_multistrip.png
  48. 2
      tests/Images/Input/Tiff/issues/readme.md
  49. BIN
      tests/Images/Input/Tiff/metadata_sample.tiff
  50. BIN
      tests/Images/Input/Tiff/multipage_ withPreview_differentSize_tiled.tiff
  51. BIN
      tests/Images/Input/Tiff/multipage_deflate_withPreview.tiff
  52. BIN
      tests/Images/Input/Tiff/multipage_differentSize.tiff
  53. BIN
      tests/Images/Input/Tiff/multipage_differentVariants.tiff
  54. BIN
      tests/Images/Input/Tiff/multipage_lzw.tiff
  55. BIN
      tests/Images/Input/Tiff/palette_grayscale_deflate_multistrip.tiff
  56. BIN
      tests/Images/Input/Tiff/palette_uncompressed.tiff
  57. BIN
      tests/Images/Input/Tiff/rgb_deflate.tiff
  58. BIN
      tests/Images/Input/Tiff/rgb_deflate_multistrip.tiff
  59. BIN
      tests/Images/Input/Tiff/rgb_jpeg.tiff
  60. BIN
      tests/Images/Input/Tiff/rgb_lzw.tiff
  61. BIN
      tests/Images/Input/Tiff/rgb_lzw_multistrip.tiff
  62. BIN
      tests/Images/Input/Tiff/rgb_packbits.tiff
  63. BIN
      tests/Images/Input/Tiff/rgb_packbits_multistrip.tiff
  64. BIN
      tests/Images/Input/Tiff/rgb_uncompressed.tiff
  65. BIN
      tests/Images/Input/Tiff/rgb_uncompressed_tiled.tiff

2
.gitattributes

@ -107,6 +107,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

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 513 KiB

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

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 821 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

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

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

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.
Loading…
Cancel
Save