diff --git a/tests/ImageSharp.Tests/Formats/Jpg/JpegEncoderTests.cs b/tests/ImageSharp.Tests/Formats/Jpg/JpegEncoderTests.cs
index 10657ea78f..cc030bbf7c 100644
--- a/tests/ImageSharp.Tests/Formats/Jpg/JpegEncoderTests.cs
+++ b/tests/ImageSharp.Tests/Formats/Jpg/JpegEncoderTests.cs
@@ -15,6 +15,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison;
using SixLabors.ImageSharp.Tests.TestUtilities.ReferenceCodecs;
+ using SixLabors.Primitives;
using Xunit;
using Xunit.Abstractions;
@@ -55,20 +56,27 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
TestJpegEncoderCore(provider, subsample, quality);
}
- private static ImageComparer GetComparer(int quality)
+ ///
+ /// Anton's SUPER-SCIENTIFIC tolerance threshold calculation
+ ///
+ private static ImageComparer GetComparer(int quality, JpegSubsample subsample)
{
- if (quality > 90)
- {
- return ImageComparer.Tolerant(0.0005f / 100);
- }
- else if (quality > 50)
+ float tolerance = 0.015f; // ~1.5%
+
+ if (quality < 50)
{
- return ImageComparer.Tolerant(0.005f / 100);
+ tolerance *= 10f;
}
- else
+ else if (quality < 75 || subsample == JpegSubsample.Ratio420)
{
- return ImageComparer.Tolerant(0.01f / 100);
+ tolerance *= 5f;
+ if (subsample == JpegSubsample.Ratio420)
+ {
+ tolerance *= 2f;
+ }
}
+
+ return ImageComparer.Tolerant(tolerance);
}
private static void TestJpegEncoderCore(
@@ -88,7 +96,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
Quality = quality
};
string info = $"{subsample}-Q{quality}";
- ImageComparer comparer = GetComparer(quality);
+ ImageComparer comparer = GetComparer(quality, subsample);
// Does DebugSave & load reference CompareToReferenceInput():
image.VerifyEncoder(provider, "jpeg", info, encoder, comparer, referenceImageExtension: "png");
diff --git a/tests/Images/External b/tests/Images/External
index d9c7d37074..20f83891ce 160000
--- a/tests/Images/External
+++ b/tests/Images/External
@@ -1 +1 @@
-Subproject commit d9c7d37074e112eabeccdde6381286f69b01b8b1
+Subproject commit 20f83891ce75597486f5532010a8c5dea1419a4d