1# Copyright (c) 2011 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5"""Compare two images for equality."""
6
7from PIL import Image
8from PIL import ImageChops
9
10
11def Compare(file1, file2, **kwargs):
12  """Compares two images to see if they're identical.
13
14  Args:
15    file1: path to first image to compare
16    file2: path to second image to compare
17    kwargs: unused for this operator
18
19  Returns:
20    None if the images are identical
21    A tuple of (errorstring, image) if they're not
22  """
23  kwargs = kwargs  # unused parameter
24
25  im1 = Image.open(file1)
26  im2 = Image.open(file2)
27
28  if im1.size != im2.size:
29    return ("The images are of different size (%s vs %s)" %
30            (im1.size, im2.size), im1)
31
32  diff = ImageChops.difference(im1, im2)
33
34  if max(diff.getextrema()) != (0, 0):
35    return ("The images differ", diff)
36  else:
37    return None
38