Skip to content

Commit 7474171

Browse files
committed
Use file paths as well as image objects
1 parent 46c5911 commit 7474171

File tree

2 files changed

+47
-1
lines changed

2 files changed

+47
-1
lines changed

source/SkiaSharp.Extended/Comparer/SKPixelComparer.cs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,13 @@ namespace SkiaSharp.Extended
44
{
55
public static class SKPixelComparer
66
{
7+
public static SKPixelComparisonResult Compare(string firstFilename, string secondFilename)
8+
{
9+
using var first = SKImage.FromEncodedData(firstFilename);
10+
using var second = SKImage.FromEncodedData(secondFilename);
11+
return Compare(first, second);
12+
}
13+
714
public static SKPixelComparisonResult Compare(SKBitmap first, SKBitmap second)
815
{
916
using var firstPixmap = first.PeekPixels();
@@ -55,6 +62,14 @@ public static SKPixelComparisonResult Compare(SKImage first, SKImage second)
5562
return new SKPixelComparisonResult(totalPixels, errorPixels, absoluteError);
5663
}
5764

65+
public static SKPixelComparisonResult Compare(string firstFilename, string secondFilename, string maskFilename)
66+
{
67+
using var first = SKImage.FromEncodedData(firstFilename);
68+
using var second = SKImage.FromEncodedData(secondFilename);
69+
using var mask = SKImage.FromEncodedData(maskFilename);
70+
return Compare(first, second, mask);
71+
}
72+
5873
public static SKPixelComparisonResult Compare(SKBitmap first, SKBitmap second, SKBitmap mask)
5974
{
6075
using var firstPixmap = first.PeekPixels();
@@ -121,6 +136,13 @@ public static SKPixelComparisonResult Compare(SKImage first, SKImage second, SKI
121136
return new SKPixelComparisonResult(totalPixels, errorPixels, absoluteError);
122137
}
123138

139+
public static SKImage GenerateDifferenceMask(string firstFilename, string secondFilename)
140+
{
141+
using var first = SKImage.FromEncodedData(firstFilename);
142+
using var second = SKImage.FromEncodedData(secondFilename);
143+
return GenerateDifferenceMask(first, second);
144+
}
145+
124146
public static SKImage GenerateDifferenceMask(SKBitmap first, SKBitmap second)
125147
{
126148
using var firstPixmap = first.PeekPixels();

tests/SkiaSharp.Extended.Tests/Comparer/SKPixelComparerTest.cs

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ public void DifferentPixmapsReportDifferenceCorrectly(uint firstColor, uint seco
8585
[InlineData(pngFirst, pngFirst)]
8686
[InlineData(jpgSecond, jpgSecond)]
8787
[InlineData(pngSecond, pngSecond)]
88-
public void SameFilesReportNoDifference(string first, string second)
88+
public void SameImagesReportNoDifference(string first, string second)
8989
{
9090
using var firstImage = SKImage.FromEncodedData(GetImagePath(first));
9191
using var secondImage = SKImage.FromEncodedData(GetImagePath(second));
@@ -101,6 +101,18 @@ public void SameFilesReportNoDifference(string first, string second)
101101
[InlineData(jpgFirst, jpgSecond, 2259184, 15870, 0.05288166768853464)]
102102
[InlineData(pngFirst, pngSecond, 2249290, 12570, 0.041885479700370536)]
103103
public void SimilarFilesAreSimilar(string first, string second, int expAbsError, int expPixError, double expPixPercent)
104+
{
105+
var result = SKPixelComparer.Compare(GetImagePath(first), GetImagePath(second));
106+
107+
Assert.Equal(expAbsError, result.AbsoluteError);
108+
Assert.Equal(expPixError, result.ErrorPixelCount);
109+
Assert.Equal(expPixPercent, result.ErrorPixelPercentage);
110+
}
111+
112+
[Theory]
113+
[InlineData(jpgFirst, jpgSecond, 2259184, 15870, 0.05288166768853464)]
114+
[InlineData(pngFirst, pngSecond, 2249290, 12570, 0.041885479700370536)]
115+
public void SimilarImagesAreSimilar(string first, string second, int expAbsError, int expPixError, double expPixPercent)
104116
{
105117
using var firstImage = SKImage.FromEncodedData(GetImagePath(first));
106118
using var secondImage = SKImage.FromEncodedData(GetImagePath(second));
@@ -116,6 +128,18 @@ public void SimilarFilesAreSimilar(string first, string second, int expAbsError,
116128
[InlineData(jpgFirst, pngFirst, 884487, 231040, 0.7698664462986164)]
117129
[InlineData(jpgSecond, pngSecond, 873399, 221697, 0.7387339055793991)]
118130
public void SimilarFilesAreCompressedDifferent(string first, string second, int expAbsError, int expPixError, double expPixPercent)
131+
{
132+
var result = SKPixelComparer.Compare(GetImagePath(first), GetImagePath(second));
133+
134+
Assert.Equal(expAbsError, result.AbsoluteError);
135+
Assert.Equal(expPixError, result.ErrorPixelCount);
136+
Assert.Equal(expPixPercent, result.ErrorPixelPercentage);
137+
}
138+
139+
[Theory]
140+
[InlineData(jpgFirst, pngFirst, 884487, 231040, 0.7698664462986164)]
141+
[InlineData(jpgSecond, pngSecond, 873399, 221697, 0.7387339055793991)]
142+
public void SimilarImagesAreCompressedDifferent(string first, string second, int expAbsError, int expPixError, double expPixPercent)
119143
{
120144
using var firstImage = SKImage.FromEncodedData(GetImagePath(first));
121145
using var secondImage = SKImage.FromEncodedData(GetImagePath(second));

0 commit comments

Comments
 (0)