X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=scripts%2Fsnapdiff.py;h=59ec870ea06954eee1f5ca69f9297d5c42ee3f2d;hb=771273711a483847df104149a992746b44bb8314;hp=37fe8897ea6fdb917a55de49aa91d2e0b5564dc6;hpb=b3b6d733ee93c9438e2d2fa8b490cb0690b74a2e;p=apitrace
diff --git a/scripts/snapdiff.py b/scripts/snapdiff.py
index 37fe889..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',
@@ -170,6 +188,10 @@ def main():
'--overwrite',
action="store_true", dest="overwrite", default=False,
help="overwrite images")
+ optparser.add_option(
+ '--show-all',
+ action="store_true", dest="show_all", default=False,
+ help="show all images, including similar ones")
(options, args) = optparser.parse_args(sys.argv[1:])
@@ -199,23 +221,30 @@ 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):
+ if options.verbose:
+ sys.stdout.write('Comparing %s and %s ...' % (ref_image, src_image))
comparer = Comparer(ref_image, src_image, options.alpha)
- if options.overwrite \
- or not os.path.exists(delta_image) \
- or (os.path.getmtime(delta_image) < os.path.getmtime(ref_image) \
- and os.path.getmtime(delta_image) < os.path.getmtime(src_image)):
-
- comparer.write_diff(delta_image, fuzz=options.fuzz)
- if comparer.ae(fuzz=options.fuzz) == 0:
+ 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, image))
- surface(html, ref_image)
- surface(html, src_image)
- surface(html, delta_image)
+ html.write(' %s | \n' % (bgcolor, ref_image, image))
+ if not match or options.show_all:
+ if options.overwrite \
+ or not os.path.exists(delta_image) \
+ or (os.path.getmtime(delta_image) < os.path.getmtime(ref_image) \
+ and os.path.getmtime(delta_image) < os.path.getmtime(src_image)):
+ comparer.write_diff(delta_image, fuzz=options.fuzz)
+ surface(html, ref_image)
+ surface(html, src_image)
+ surface(html, delta_image)
html.write('
\n')
html.flush()
html.write(' \n')