X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;ds=inline;f=scripts%2Fsnapdiff.py;h=291b2da9425d71e4e075bec9d66fb049fd018daa;hb=ae3981a47606435ed5d3567384d96c07f8d01131;hp=b7bad72336d0e06818c5e1315a7f381c385da7df;hpb=0798473e19f040b08d0dd0963b9d457c54eb22ef;p=apitrace diff --git a/scripts/snapdiff.py b/scripts/snapdiff.py index b7bad72..291b2da 100755 --- a/scripts/snapdiff.py +++ b/scripts/snapdiff.py @@ -39,10 +39,12 @@ import operator from PIL import Image from PIL import ImageChops from PIL import ImageEnhance +from PIL import ImageFilter thumb_size = 320, 320 +gaussian_kernel = ImageFilter.Kernel((3, 3), [1, 2, 1, 2, 4, 2, 1, 2, 1], 16) class Comparer: '''Image comparer.''' @@ -80,12 +82,16 @@ class Comparer: diff_im = Image.blend(self.src_im, diff_im, 0xcc/255.0) diff_im.save(diff_image) - def precision(self): + def precision(self, filter=False): if self.size_mismatch(): return 0.0 + diff = self.diff + if filter: + diff = diff.filter(gaussian_kernel) + # See also http://effbot.org/zone/pil-comparing-images.htm - h = self.diff.histogram() + h = diff.histogram() square_error = 0 for i in range(1, 256): square_error += sum(h[i : 3*256: 256])*i*i @@ -121,14 +127,13 @@ def surface(html, image): def is_image(path): - return \ - path.endswith('.png') \ - and not path.endswith('.diff.png') \ - and not path.endswith('.thumb.png') + name = os.path.basename(path) + name, ext1 = os.path.splitext(name) + name, ext2 = os.path.splitext(name) + return ext1 in ('.png', '.bmp') and ext2 not in ('.diff', '.thumb') def find_images(prefix): - prefix = os.path.abspath(prefix) if os.path.isdir(prefix): prefix_dir = prefix else: @@ -186,7 +191,7 @@ def main(): html.write('\n') html.write(' \n') html.write(' \n') - html.write(' \n' % (ref_prefix, src_prefix)) + html.write(' \n' % (ref_prefix, src_prefix)) for image in images: ref_image = ref_prefix + image src_image = src_prefix + image @@ -202,6 +207,7 @@ def main(): comparer.write_diff(delta_image, fuzz=options.fuzz) html.write(' \n') + html.write(' \n' % (image,)) surface(html, ref_image) surface(html, src_image) surface(html, delta_image)
%s%sΔ
File%s%sΔ
%s