Compares images
Inspired by the image compare feature "Visual verification API" of TestApi this code supports comparing images by using a tolerance mask image. That tolerance mask image is a valid image by itself and can be manipulated.
ImageSharpCompare focus on os agnostic support and therefore depends on SixLabors.ImageSharp.
NOTE: for now the comparer will only work with RGB components and totally ignores Alpha-channell.
bool isEqual = ImageSharpCompare.ImagesAreEqual("actual.png", "expected.png");
// calcs MeanError, AbsoluteError, PixelErrorCount and PixelErrorPercentage
ICompareResult calcDiff = ImageSharpCompare.CalcDiff("actual.png", "expected.png");
Imagine two images you want to compare, and want to accept the found difference as at state of allowed difference.
using "compare.CalcDiff" you can calc a diff mask from actual and reference image
Example - Create difference image
using (var fileStreamDifferenceMask = File.Create("differenceMask.png"))
using (var maskImage = ImageSharpCompare.CalcDiffMaskImage(pathPic1, pathPic2))
SixLabors.ImageSharp.ImageExtensions.SaveAsPng(maskImage, fileStreamDifferenceMask);
Example - Compare two images using the created difference image. Add white pixels to differenceMask.png where you want to allow difference.
var maskedDiff = ImageSharpCompare.CalcDiff(pathPic1, pathPic2, "differenceMask.png");
Assert.That(maskedDiff.AbsoluteError, Is.EqualTo(0));