X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=scripts%2Fsnapdiff.py;h=59ec870ea06954eee1f5ca69f9297d5c42ee3f2d;hb=771273711a483847df104149a992746b44bb8314;hp=7ae3a433fa125724f83c82548bbff4da9e7886c8;hpb=d2d7112462378739bf96775f547837431375ff4d;p=apitrace diff --git a/scripts/snapdiff.py b/scripts/snapdiff.py index 7ae3a43..59ec870 100755 --- a/scripts/snapdiff.py +++ b/scripts/snapdiff.py @@ -42,7 +42,7 @@ from PIL import ImageEnhance from PIL import ImageFilter -thumb_size = 320, 320 +thumbSize = 320 gaussian_kernel = ImageFilter.Kernel((3, 3), [1, 2, 1, 2, 4, 2, 1, 2, 1], 16) @@ -71,6 +71,9 @@ class Comparer: return self.ref_im.size != self.src_im.size def write_diff(self, diff_image, fuzz = 0.05): + if self.size_mismatch(): + return + # make a difference image similar to ImageMagick's compare utility mask = ImageEnhance.Brightness(self.diff).enhance(1.0/fuzz) mask = mask.convert('L') @@ -119,7 +122,18 @@ def surface(html, image): and (not os.path.exists(thumb) \ or os.path.getmtime(thumb) < os.path.getmtime(image)): im = Image.open(image) - im.thumbnail(thumb_size) + imageWidth, imageHeight = im.size + if imageWidth <= thumbSize and imageHeight <= thumbSize: + if imageWidth >= imageHeight: + imageHeight = imageHeight*thumbSize/imageWidth + imageWidth = thumbSize + else: + imageWidth = imageWidth*thumbSize/imageHeight + imageHeight = thumbSize + html.write(' \n' % (image, imageWidth, imageHeight)) + return + + im.thumbnail((thumbSize, thumbSize)) im.save(thumb) else: thumb = image @@ -154,6 +168,10 @@ def main(): optparser = optparse.OptionParser( usage="\n\t%prog [options] ") + optparser.add_option( + '-v', '--verbose', + action="store_true", dest="verbose", default=False, + help="verbose output") optparser.add_option( '-o', '--output', metavar='FILE', type="string", dest="output", default='index.html', @@ -203,14 +221,19 @@ def main(): root, ext = os.path.splitext(src_image) delta_image = "%s.diff.png" % (root, ) if os.path.exists(ref_image) and os.path.exists(src_image): - print "Comparing %s and %s\n" % (ref_image, src_image) + if options.verbose: + sys.stdout.write('Comparing %s and %s ...' % (ref_image, src_image)) comparer = Comparer(ref_image, src_image, options.alpha) match = comparer.ae(fuzz=options.fuzz) == 0 if match: + result = 'MATCH' bgcolor = '#20ff20' else: + result = 'MISMATCH' failures += 1 bgcolor = '#ff2020' + if options.verbose: + sys.stdout.write(' %s\n' % (result,)) html.write(' \n') html.write(' %s\n' % (bgcolor, ref_image, image)) if not match or options.show_all: