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>")