def write_image_diff()

in plugin/src/py/android_screenshot_tests/pull_screenshots.py [0:0]


def write_image_diff(old_screenshot_url, dir, html, screenshot):
    from PIL import Image, ImageChops, ImageOps

    html.write('<div class="img-block">')
    html.write("Diff")
    html.write('<div class="img-wrapper">')

    old_image = Image.open(urllib.urlopen(old_screenshot_url))
    new_image = Image.new(old_image.mode, (old_image.size[0], old_image.size[1]))

    # combine all tiles back into one image to ease the comparison
    x_offset = y_offset = height = 0
    for y in range(int(screenshot["tileHeight"])):
        for x in range(int(screenshot["tileWidth"])):
            image_file = join(
                dir, "./" + common.get_image_file_name(screenshot["name"], x, y)
            )
            if os.path.exists(image_file):
                img = Image.open(image_file)
                new_image.paste(img, (x_offset, y_offset))
                x_offset += img.size[0]
                height = img.size[1]
        x_offset = 0
        y_offset += height

    difference = ImageChops.difference(old_image, new_image).convert("RGB")
    difference = ImageOps.invert(difference)

    with tempfile.NamedTemporaryFile(delete=False, suffix=".png") as fp:
        difference.save(fp)
        html.write('<img src="%s" />' % fp.name)
    html.write("</div></div>")