From b3b48272118e468848cfe0118893c493c192a0da Mon Sep 17 00:00:00 2001 From: Anton Firszov Date: Sat, 19 Aug 2017 01:12:16 +0200 Subject: [PATCH] introduced OldJpegDecoder : IImageDecoder for the GolangPort decoder --- .../Formats/Jpeg/GolangPort/OldJpegDecoder.cs | 29 +++++++++++++++ .../Formats/Jpg/JpegDecoderTests.cs | 36 ++++--------------- 2 files changed, 35 insertions(+), 30 deletions(-) create mode 100644 src/ImageSharp/Formats/Jpeg/GolangPort/OldJpegDecoder.cs diff --git a/src/ImageSharp/Formats/Jpeg/GolangPort/OldJpegDecoder.cs b/src/ImageSharp/Formats/Jpeg/GolangPort/OldJpegDecoder.cs new file mode 100644 index 0000000000..89a7e7535c --- /dev/null +++ b/src/ImageSharp/Formats/Jpeg/GolangPort/OldJpegDecoder.cs @@ -0,0 +1,29 @@ +namespace ImageSharp.Formats.Jpeg.GolangPort +{ + using System.IO; + + using ImageSharp.PixelFormats; + + /// + /// Image decoder for generating an image out of a jpg stream. + /// + public sealed class OldJpegDecoder : IImageDecoder, IJpegDecoderOptions + { + /// + /// Gets or sets a value indicating whether the metadata should be ignored when the image is being decoded. + /// + public bool IgnoreMetadata { get; set; } + + /// + public Image Decode(Configuration configuration, Stream stream) + where TPixel : struct, IPixel + { + Guard.NotNull(stream, nameof(stream)); + + using (var decoder = new OldJpegDecoderCore(configuration, this)) + { + return decoder.Decode(stream); + } + } + } +} \ No newline at end of file diff --git a/tests/ImageSharp.Tests/Formats/Jpg/JpegDecoderTests.cs b/tests/ImageSharp.Tests/Formats/Jpg/JpegDecoderTests.cs index 836f97e585..2102968690 100644 --- a/tests/ImageSharp.Tests/Formats/Jpg/JpegDecoderTests.cs +++ b/tests/ImageSharp.Tests/Formats/Jpg/JpegDecoderTests.cs @@ -40,9 +40,9 @@ public JpegDecoderTests(ITestOutputHelper output) private ITestOutputHelper Output { get; } - private static IImageDecoder OriginalDecoder => new JpegDecoder(); + private static IImageDecoder OriginalDecoder => new OldJpegDecoder(); - private static IImageDecoder GetPdfJsDecoder => throw new NotImplementedException(); + private static IImageDecoder PdfJsDecoder => new JpegDecoder(); private float GetDifferenceInPercents(Image image, TestImageProvider provider) where TPixel : struct, IPixel @@ -76,7 +76,7 @@ public void CompareJpegDecoders(TestImageProvider provider) this.Output.WriteLine($"Difference using ORIGINAL decoder: {d:0.0000}%"); } - using (Image image = provider.GetImage(GetPdfJsDecoder)) + using (Image image = provider.GetImage(PdfJsDecoder)) { double d = this.GetDifferenceInPercents(image, provider); this.Output.WriteLine($"Difference using PDFJS decoder: {d:0.0000}%"); @@ -100,7 +100,7 @@ public void DecodeBaselineJpeg(TestImageProvider provider) public void DecodeBaselineJpeg_PdfJs(TestImageProvider provider) where TPixel : struct, IPixel { - using (Image image = provider.GetImage(GetPdfJsDecoder)) + using (Image image = provider.GetImage(PdfJsDecoder)) { image.DebugSave(provider); @@ -126,7 +126,7 @@ public void DecodeProgressiveJpeg(TestImageProvider provider) public void DecodeProgressiveJpeg_PdfJs(TestImageProvider provider) where TPixel : struct, IPixel { - using (Image image = provider.GetImage(GetPdfJsDecoder)) + using (Image image = provider.GetImage(PdfJsDecoder)) { image.DebugSave(provider, VeryTolerantJpegComparer); } @@ -160,31 +160,7 @@ public void DecodeGenerated( var mirror = Image.Load(data); mirror.DebugSave(provider, $"_{subsample}_Q{quality}"); } - - [Theory] - [WithSolidFilledImages(42, 88, 255, 0, 0, PixelTypes.Rgba32)] - public void DecodeGenerated_MetadataOnly( - TestImageProvider provider) - where TPixel : struct, IPixel - { - using (Image image = provider.GetImage()) - { - using (var ms = new MemoryStream()) - { - image.Save(ms, new JpegEncoder()); - ms.Seek(0, SeekOrigin.Begin); - - using (var decoder = new OldJpegDecoderCore(null, new JpegDecoder())) - { - decoder.Decode(ms); - - Assert.Equal(decoder.ImageWidth, image.Width); - Assert.Equal(decoder.ImageHeight, image.Height); - } - } - } - } - + [Fact] public void Decoder_Reads_Correct_Resolution_From_Jfif() {