Browse Source

Add webp lossy tests

pull/1552/head
Brian Popow 6 years ago
parent
commit
3266b150ab
  1. 81
      tests/ImageSharp.Tests/Formats/WebP/WebPDecoderTests.cs
  2. 18
      tests/ImageSharp.Tests/TestImages.cs
  3. 3
      tests/Images/Input/WebP/bike_lossy.webp

81
tests/ImageSharp.Tests/Formats/WebP/WebPDecoderTests.cs

@ -17,12 +17,14 @@ namespace SixLabors.ImageSharp.Tests.Formats.WebP
public class WebPDecoderTests
{
private static WebPDecoder WebpDecoder => new WebPDecoder();
private static MagickReferenceDecoder ReferenceDecoder => new MagickReferenceDecoder();
[Theory]
[InlineData(Lossless.Lossless1, 1000, 307, 24)]
[InlineData(Lossless.Lossless2, 1000, 307, 24)]
[InlineData(Lossy.Alpha.LossyAlpha1, 1000, 307, 24)]
[InlineData(Lossy.Alpha.LossyAlpha2, 1000, 307, 24)]
[InlineData(Animated.Animated1, 400, 400, 24)]
[InlineData(Lossy.Alpha.LossyAlpha1, 1000, 307, 32)]
[InlineData(Lossy.Alpha.LossyAlpha2, 1000, 307, 32)]
public void Identify_DetectsCorrectDimensions(
string imagePath,
int expectedWidth,
@ -41,19 +43,40 @@ namespace SixLabors.ImageSharp.Tests.Formats.WebP
}
[Theory]
[InlineData(Lossy.Alpha.LossyAlpha1, 1000, 307, 24)]
public void DecodeLossyImage_Tmp(
string imagePath,
int expectedWidth,
int expectedHeight,
int expectedBitsPerPixel)
[WithFile(Lossy.Bike, PixelTypes.Rgba32)]
[WithFile(Lossy.LenaIccp, PixelTypes.Rgba32)]
[WithFile(Lossy.Lossy01, PixelTypes.Rgba32)]
[WithFile(Lossy.Lossy02, PixelTypes.Rgba32)]
[WithFile(Lossy.Lossy03, PixelTypes.Rgba32)]
[WithFile(Lossy.Lossy04, PixelTypes.Rgba32)]
[WithFile(Lossy.Lossy05, PixelTypes.Rgba32)]
[WithFile(Lossy.Lossy06, PixelTypes.Rgba32)]
[WithFile(Lossy.Lossy07, PixelTypes.Rgba32)]
[WithFile(Lossy.Lossy08, PixelTypes.Rgba32)]
[WithFile(Lossy.Lossy09, PixelTypes.Rgba32)]
public void WebpDecoder_CanDecode_Lossy<TPixel>(TestImageProvider<TPixel> provider)
where TPixel : struct, IPixel<TPixel>
{
var testFile = TestFile.Create(imagePath);
using (var stream = new MemoryStream(testFile.Bytes, false))
using (Image<TPixel> image = provider.GetImage(WebpDecoder))
{
var image = Image.Load(stream);
Assert.Equal(expectedWidth, image.Width);
Assert.Equal(expectedHeight, image.Height);
image.DebugSave(provider);
image.CompareToOriginal(provider, ReferenceDecoder);
}
}
[Theory]
[WithFile(Lossy.Alpha.LossyAlpha1, PixelTypes.Rgba32)]
[WithFile(Lossy.Alpha.LossyAlpha2, PixelTypes.Rgba32)]
[WithFile(Lossy.Alpha.LossyAlpha3, PixelTypes.Rgba32)]
[WithFile(Lossy.Alpha.LossyAlpha4, PixelTypes.Rgba32)]
[WithFile(Lossy.Alpha.LossyAlphaNoCompression, PixelTypes.Rgba32)]
public void WebpDecoder_CanDecode_Lossy_WithAlpha<TPixel>(TestImageProvider<TPixel> provider)
where TPixel : struct, IPixel<TPixel>
{
using (Image<TPixel> image = provider.GetImage(WebpDecoder))
{
image.DebugSave(provider);
image.CompareToOriginal(provider, ReferenceDecoder);
}
}
@ -63,10 +86,10 @@ namespace SixLabors.ImageSharp.Tests.Formats.WebP
public void WebpDecoder_CanDecode_Lossless_WithoutTransforms<TPixel>(TestImageProvider<TPixel> provider)
where TPixel : struct, IPixel<TPixel>
{
using (Image<TPixel> image = provider.GetImage(new WebPDecoder()))
using (Image<TPixel> image = provider.GetImage(WebpDecoder))
{
image.DebugSave(provider);
image.CompareToOriginal(provider, new MagickReferenceDecoder());
image.CompareToOriginal(provider, ReferenceDecoder);
}
}
@ -81,10 +104,10 @@ namespace SixLabors.ImageSharp.Tests.Formats.WebP
TestImageProvider<TPixel> provider)
where TPixel : struct, IPixel<TPixel>
{
using (Image<TPixel> image = provider.GetImage(new WebPDecoder()))
using (Image<TPixel> image = provider.GetImage(WebpDecoder))
{
image.DebugSave(provider);
image.CompareToOriginal(provider, new MagickReferenceDecoder());
image.CompareToOriginal(provider, ReferenceDecoder);
}
}
@ -97,10 +120,10 @@ namespace SixLabors.ImageSharp.Tests.Formats.WebP
public void WebpDecoder_CanDecode_Lossless_WithColorIndexTransform<TPixel>(TestImageProvider<TPixel> provider)
where TPixel : struct, IPixel<TPixel>
{
using (Image<TPixel> image = provider.GetImage(new WebPDecoder()))
using (Image<TPixel> image = provider.GetImage(WebpDecoder))
{
image.DebugSave(provider);
image.CompareToOriginal(provider, new MagickReferenceDecoder());
image.CompareToOriginal(provider, ReferenceDecoder);
}
}
@ -110,10 +133,10 @@ namespace SixLabors.ImageSharp.Tests.Formats.WebP
public void WebpDecoder_CanDecode_Lossless_WithPredictorTransform<TPixel>(TestImageProvider<TPixel> provider)
where TPixel : struct, IPixel<TPixel>
{
using (Image<TPixel> image = provider.GetImage(new WebPDecoder()))
using (Image<TPixel> image = provider.GetImage(WebpDecoder))
{
image.DebugSave(provider);
image.CompareToOriginal(provider, new MagickReferenceDecoder());
image.CompareToOriginal(provider, ReferenceDecoder);
}
}
@ -123,10 +146,10 @@ namespace SixLabors.ImageSharp.Tests.Formats.WebP
public void WebpDecoder_CanDecode_Lossless_WithCrossColorTransform<TPixel>(TestImageProvider<TPixel> provider)
where TPixel : struct, IPixel<TPixel>
{
using (Image<TPixel> image = provider.GetImage(new WebPDecoder()))
using (Image<TPixel> image = provider.GetImage(WebpDecoder))
{
image.DebugSave(provider);
image.CompareToOriginal(provider, new MagickReferenceDecoder());
image.CompareToOriginal(provider, ReferenceDecoder);
}
}
@ -147,10 +170,10 @@ namespace SixLabors.ImageSharp.Tests.Formats.WebP
public void WebpDecoder_CanDecode_Lossless_WithTwoTransforms<TPixel>(TestImageProvider<TPixel> provider)
where TPixel : struct, IPixel<TPixel>
{
using (Image<TPixel> image = provider.GetImage(new WebPDecoder()))
using (Image<TPixel> image = provider.GetImage(WebpDecoder))
{
image.DebugSave(provider);
image.CompareToOriginal(provider, new MagickReferenceDecoder());
image.CompareToOriginal(provider, ReferenceDecoder);
}
}
@ -166,10 +189,10 @@ namespace SixLabors.ImageSharp.Tests.Formats.WebP
public void WebpDecoder_CanDecode_Lossless_WithThreeTransforms<TPixel>(TestImageProvider<TPixel> provider)
where TPixel : struct, IPixel<TPixel>
{
using (Image<TPixel> image = provider.GetImage(new WebPDecoder()))
using (Image<TPixel> image = provider.GetImage(WebpDecoder))
{
image.DebugSave(provider);
image.CompareToOriginal(provider, new MagickReferenceDecoder());
image.CompareToOriginal(provider, ReferenceDecoder);
}
}
@ -181,7 +204,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.WebP
public void WebpDecoder_ThrowImageFormatException_OnInvalidImages<TPixel>(TestImageProvider<TPixel> provider)
where TPixel : struct, IPixel<TPixel>
{
Assert.Throws<ImageFormatException>(() => { using (provider.GetImage(new WebPDecoder())) { } });
Assert.Throws<ImageFormatException>(() => { using (provider.GetImage(WebpDecoder)) { } });
}
}
}

18
tests/ImageSharp.Tests/TestImages.cs

@ -428,11 +428,18 @@ namespace SixLabors.ImageSharp.Tests
public static class Lossy
{
public const string SampleWebpOne = "WebP/Lossy/1.webp";
public const string SampleWebpTwo = "WebP/Lossy/2.webp";
public const string SampleWebpThree = "WebP/Lossy/3.webp";
public const string SampleWebpFour = "WebP/Lossy/4.webp";
public const string SampleWebpFive = "WebP/Lossy/5.webp";
public const string Bike = "WebP/bike_lossy.webp";
public const string LenaIccp = "WebP/lossy_iccp.webp";
public const string VeryShort = "WebP/very_short.webp";
public const string Lossy01 = "WebP/vp80-01-intra-1400.webp";
public const string Lossy02 = "WebP/vp80-00-comprehensive-010.webp";
public const string Lossy03 = "WebP/vp80-01-intra-1417.webp";
public const string Lossy04 = "WebP/vp80-02-inter-1402.webp";
public const string Lossy05 = "WebP/vp80-03-segmentation-1401.webp";
public const string Lossy06 = "WebP/vp80-02-inter-1418.webp";
public const string Lossy07 = "WebP/vp80-03-segmentation-1403.webp";
public const string Lossy08 = "WebP/vp80-03-segmentation-1407.webp";
public const string Lossy09 = "WebP/test.webp";
public static class Alpha
{
@ -440,6 +447,7 @@ namespace SixLabors.ImageSharp.Tests
public const string LossyAlpha2 = "WebP/lossy_alpha2.webp";
public const string LossyAlpha3 = "WebP/lossy_alpha3.webp";
public const string LossyAlpha4 = "WebP/lossy_alpha4.webp";
public const string LossyAlphaNoCompression = "WebP/alpha_no_compression.webp";
}
}

3
tests/Images/Input/WebP/bike_lossy.webp

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