@@ -72,7 +72,7 @@ def compare_float( expected, actual, relTol = None, absTol = None ):
7272 return None
7373
7474#-----------------------------------------------------------------------
75- def compare_images ( expected , actual , tol ):
75+ def compare_images ( expected , actual , tol , in_decorator = False ):
7676 '''Compare two image files - not the greatest, but fast and good enough.
7777
7878 = EXAMPLE
@@ -87,6 +87,8 @@ def compare_images( expected, actual, tol ):
8787 - actual The filename of the actual image.
8888 - tol The tolerance (a unitless float). This is used to
8989 determinte the 'fuzziness' to use when comparing images.
90+ - in_decorator If called from image_comparison decorator, this should be
91+ True. (default=False)
9092 '''
9193
9294 try :
@@ -113,11 +115,21 @@ def compare_images( expected, actual, tol ):
113115
114116 if ( (rms / 10000.0 ) <= tol ):
115117 return None
116- else :
117- diff_image = os .path .join (os .path .dirname (actual ),
118- 'failed-diff-' + os .path .basename (actual ))
119- save_diff_image ( expected , actual , diff_image )
120118
119+ diff_image = os .path .join (os .path .dirname (actual ),
120+ 'failed-diff-' + os .path .basename (actual ))
121+ save_diff_image ( expected , actual , diff_image )
122+
123+ if in_decorator :
124+ results = dict (
125+ rms = rms ,
126+ expected = str (expected ),
127+ actual = str (actual ),
128+ diff = str (diff_image ),
129+ )
130+ return results
131+ else :
132+ # old-style call from mplTest directory
121133 msg = " Error: Image files did not match.\n " \
122134 " RMS Value: " + str ( rms / 10000.0 ) + "\n " \
123135 " Expected:\n " + str ( expected ) + "\n " \
@@ -130,6 +142,8 @@ def save_diff_image( expected, actual, output ):
130142 from PIL import Image
131143 expectedImage = np .array (Image .open ( expected ).convert ("RGB" )).astype (np .float )
132144 actualImage = np .array (Image .open ( actual ).convert ("RGB" )).astype (np .float )
145+ assert expectedImage .ndim == expectedImage .ndim
146+ assert expectedImage .shape == expectedImage .shape
133147 absDiffImage = abs (expectedImage - actualImage )
134148 # expand differences in luminance domain
135149 absDiffImage *= 10
0 commit comments