Browse Source

Report 1-bit mode bug. Enable test images. Change test files.

pull/1570/head
Ildar Khayrutdinov 5 years ago
parent
commit
586f8e5ee2
  1. 12
      tests/ImageSharp.Benchmarks/Codecs/DecodeTiff.cs
  2. 18
      tests/ImageSharp.Benchmarks/Codecs/EncodeTiff.cs
  3. 2
      tests/ImageSharp.Benchmarks/Config.cs
  4. 34
      tests/ImageSharp.Tests/Formats/Tiff/TiffEncoderTests.cs

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

@ -53,12 +53,12 @@ namespace SixLabors.ImageSharp.Benchmarks.Codecs
[Params(
TestImages.Tiff.CcittFax3AllTermCodes,
TestImages.Tiff.HuffmanRleAllMakeupCodes,
TestImages.Tiff.GrayscaleUncompressed,
TestImages.Tiff.PaletteUncompressed,
TestImages.Tiff.RgbDeflate,
TestImages.Tiff.RgbLzwPredictor,
TestImages.Tiff.RgbPackbits,
TestImages.Tiff.RgbUncompressed)]
TestImages.Tiff.Calliphora_GrayscaleUncompressed,
TestImages.Tiff.Calliphora_RgbPaletteLzw_Predictor,
TestImages.Tiff.Calliphora_RgbDeflate_Predictor,
TestImages.Tiff.Calliphora_RgbLzwPredictor,
TestImages.Tiff.Calliphora_RgbPackbits,
TestImages.Tiff.Calliphora_RgbUncompressed)]
public string TestImage { get; set; }
#endif

18
tests/ImageSharp.Benchmarks/Codecs/EncodeTiff.cs

@ -24,14 +24,14 @@ namespace SixLabors.ImageSharp.Benchmarks.Codecs
private string TestImageFullPath => Path.Combine(TestEnvironment.InputImagesDirectoryFullPath, this.TestImage);
[Params(TestImages.Tiff.RgbUncompressed)]
[Params(TestImages.Tiff.Calliphora_RgbUncompressed)]
public string TestImage { get; set; }
[Params(
TiffEncoderCompression.None,
////TiffEncoderCompression.Deflate,
TiffEncoderCompression.Deflate,
TiffEncoderCompression.Lzw,
////TiffEncoderCompression.PackBits,
TiffEncoderCompression.PackBits,
TiffEncoderCompression.CcittGroup3Fax,
TiffEncoderCompression.ModifiedHuffman)]
public TiffEncoderCompression Compression { get; set; }
@ -70,7 +70,15 @@ namespace SixLabors.ImageSharp.Benchmarks.Codecs
[Benchmark(Description = "ImageSharp Tiff")]
public void TiffCore()
{
var encoder = new TiffEncoder() { Compression = this.Compression };
TiffEncodingMode mode = TiffEncodingMode.Default;
// workaround for 1-bit bug
if (this.Compression == TiffEncoderCompression.CcittGroup3Fax || this.Compression == TiffEncoderCompression.ModifiedHuffman)
{
mode = TiffEncodingMode.BiColor;
}
var encoder = new TiffEncoder() { Compression = this.Compression, Mode = mode };
using var memoryStream = new MemoryStream();
this.core.SaveAsTiff(memoryStream, encoder);
}
@ -107,7 +115,7 @@ namespace SixLabors.ImageSharp.Benchmarks.Codecs
return EncoderValue.CompressionLZW;
default:
throw new System.ArgumentOutOfRangeException(nameof(compression));
throw new System.NotSupportedException(compression.ToString());
}
}
}

2
tests/ImageSharp.Benchmarks/Config.cs

@ -26,7 +26,7 @@ namespace SixLabors.ImageSharp.Benchmarks
}
#endif
this.SummaryStyle = SummaryStyle.Default.WithMaxParameterColumnWidth(40);
this.SummaryStyle = SummaryStyle.Default.WithMaxParameterColumnWidth(50);
}
public class MultiFramework : Config

34
tests/ImageSharp.Tests/Formats/Tiff/TiffEncoderTests.cs

@ -90,6 +90,40 @@ namespace SixLabors.ImageSharp.Tests.Formats.Tiff
Assert.Equal(expectedBitsPerPixel, meta.BitsPerPixel);
}
[Theory]
[WithFile(RgbUncompressed, PixelTypes.Rgba32, TiffEncoderCompression.CcittGroup3Fax, TiffCompression.CcittGroup3Fax)]
[WithFile(RgbUncompressed, PixelTypes.Rgba32, TiffEncoderCompression.ModifiedHuffman, TiffCompression.Ccitt1D)]
[WithFile(GrayscaleUncompressed, PixelTypes.L8, TiffEncoderCompression.CcittGroup3Fax, TiffCompression.CcittGroup3Fax)]
[WithFile(PaletteDeflateMultistrip, PixelTypes.L8, TiffEncoderCompression.ModifiedHuffman, TiffCompression.Ccitt1D)]
public void TiffEncoder_CorrectBiMode_Bug<TPixel>(TestImageProvider<TPixel> provider, TiffEncoderCompression compression, TiffCompression expectedCompression)
where TPixel : unmanaged, IPixel<TPixel>
{
// arrange
var encoder = new TiffEncoder() { Compression = compression };
using Image<TPixel> input = provider.GetImage();
using var memStream = new MemoryStream();
// act
input.Save(memStream, encoder);
// assert
memStream.Position = 0;
using var output = Image.Load<Rgba32>(this.configuration, memStream);
TiffMetadata meta = output.Metadata.GetTiffMetadata();
// This is bug!
// BitsPerPixel must be 1, and compression must be eqals which was setted in encoder
Assert.NotEqual(TiffBitsPerPixel.Pixel1, meta.BitsPerPixel);
Assert.NotEqual(expectedCompression, meta.Compression);
Assert.Equal(input.Metadata.GetTiffMetadata().BitsPerPixel, meta.BitsPerPixel);
Assert.Equal(TiffCompression.None, meta.Compression);
// expected values
//// Assert.Equal(TiffBitsPerPixel.Pixel1, meta.BitsPerPixel);
//// Assert.Equal(expectedCompression, meta.Compression);
}
[Theory]
[WithFile(Calliphora_RgbUncompressed, PixelTypes.Rgba32)]
public void TiffEncoder_EncodeRgb_Works<TPixel>(TestImageProvider<TPixel> provider)

Loading…
Cancel
Save