mirror of https://github.com/SixLabors/ImageSharp
2 changed files with 71 additions and 2 deletions
@ -0,0 +1,69 @@ |
|||
// Copyright (c) Six Labors.
|
|||
// Licensed under the Apache License, Version 2.0.
|
|||
|
|||
using System.IO; |
|||
using System.Linq; |
|||
using SixLabors.ImageSharp.Formats.Jpeg; |
|||
using SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder; |
|||
using SixLabors.ImageSharp.IO; |
|||
using SixLabors.ImageSharp.Metadata; |
|||
using SixLabors.ImageSharp.PixelFormats; |
|||
using SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison; |
|||
using Xunit; |
|||
using Xunit.Abstractions; |
|||
|
|||
namespace SixLabors.ImageSharp.Tests.Formats.Jpg |
|||
{ |
|||
[Trait("Format", "Jpg")] |
|||
public class SpectralToPixelConversionTests |
|||
{ |
|||
public static readonly string[] BaselineTestJpegs = |
|||
{ |
|||
TestImages.Jpeg.Baseline.Calliphora, TestImages.Jpeg.Baseline.Cmyk, TestImages.Jpeg.Baseline.Jpeg400, |
|||
TestImages.Jpeg.Baseline.Jpeg444, TestImages.Jpeg.Baseline.Testorig420, |
|||
TestImages.Jpeg.Baseline.Jpeg420Small, TestImages.Jpeg.Baseline.Bad.BadEOF, |
|||
TestImages.Jpeg.Baseline.MultiScanBaselineCMYK |
|||
}; |
|||
|
|||
public SpectralToPixelConversionTests(ITestOutputHelper output) |
|||
{ |
|||
this.Output = output; |
|||
} |
|||
|
|||
private ITestOutputHelper Output { get; } |
|||
|
|||
[Theory] |
|||
[WithFileCollection(nameof(BaselineTestJpegs), PixelTypes.Rgba32)] |
|||
public void Decoder_PixelBufferComparison<TPixel>(TestImageProvider<TPixel> provider) |
|||
where TPixel : unmanaged, IPixel<TPixel> |
|||
{ |
|||
// Stream
|
|||
byte[] sourceBytes = TestFile.Create(provider.SourceFileOrDescription).Bytes; |
|||
using var ms = new MemoryStream(sourceBytes); |
|||
using var bufferedStream = new BufferedReadStream(Configuration.Default, ms); |
|||
|
|||
// Decoding
|
|||
using var converter = new SpectralConverter<TPixel>(Configuration.Default, cancellationToken: default); |
|||
var decoder = new JpegDecoderCore(Configuration.Default, new JpegDecoder()); |
|||
var scanDecoder = new HuffmanScanDecoder(bufferedStream, converter, cancellationToken: default); |
|||
decoder.ParseStream(bufferedStream, scanDecoder, ct: default); |
|||
|
|||
// Test metadata
|
|||
provider.Utility.TestGroupName = nameof(JpegDecoderTests); |
|||
provider.Utility.TestName = JpegDecoderTests.DecodeBaselineJpegOutputName; |
|||
|
|||
// Comparison
|
|||
using (Image<TPixel> image = new Image<TPixel>(Configuration.Default, converter.PixelBuffer, new ImageMetadata())) |
|||
using (Image<TPixel> referenceImage = provider.GetReferenceOutputImage<TPixel>(appendPixelTypeToFileName: false)) |
|||
{ |
|||
ImageSimilarityReport report = ImageComparer.Exact.CompareImagesOrFrames(referenceImage, image); |
|||
|
|||
this.Output.WriteLine($"*** {provider.SourceFileOrDescription} ***"); |
|||
this.Output.WriteLine($"Difference: {report.DifferencePercentageString}"); |
|||
|
|||
// ReSharper disable once PossibleInvalidOperationException
|
|||
Assert.True(report.TotalNormalizedDifference.Value < 0.005f); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
@ -1,3 +1,3 @@ |
|||
version https://git-lfs.github.com/spec/v1 |
|||
oid sha256:a76832570111a868ea6cb6e8287aae1976c575c94c63880c74346a4b5db5d305 |
|||
size 27007 |
|||
oid sha256:2b5e1d91fb6dc1ddb696fbee63331ba9c6ef3548b619c005887e60c5b01f4981 |
|||
size 27303 |
|||
|
|||
Loading…
Reference in new issue