from PIL import Image
from PIL import ImageChops 
def compare_images(path_one, path_two, diff_save_location):
  """
  较为图片,如果有不一样则转化成展现不一样的图片
  @主要参数一: path_one: 第一张图片的路径
  @主要参数二: path_two: 第二张图片的路径
  @主要参数三: diff_save_location: 不一样图的储存路径
  """
  image_one = Image.open(path_one)
  image_two = Image.open(path_two)
  try: 
    diff = ImageChops.difference(image_one, image_two)
    if diff.getbbox() is None:
    # 图片间沒有一切不一样则立即撤出
      print("【 】We are the same!")
    else:
      diff.save(diff_save_location)
  except ValueError as e:
    text = ("表明图片尺寸和box相匹配的总宽不一致,参照API表明:Pastes another image into this image."
        "The box argument is either a 2-tuple giving the upper left corner, a 4-tuple defining the left, upper, "
        "right, and lower pixel coordinate, or None (same as (0, 0)). If a 4-tuple is given, the size of the pasted "
        "image must match the size of the region.应用2纬的box防止所述难题")
    print("【{0}】{1}".format(e,text))
if __name__ == '__main__':
  compare_images('1.png',
          '2.png',
          '我们不一样.png')

实行結果:

用python实现对比两张图片的不同 图片 对比 python python  第1张

用python实现对比两张图片的不同 图片 对比 python python  第2张

用python实现对比两张图片的不同 图片 对比 python python  第3张

用python实现对比两张图片的不同 图片 对比 python python  第4张

第二种方式:

from PIL import Image
import math
import operator
from functools import reduce
def image_contrast(img1, img2):
  image1 = Image.open(img1)
  image2 = Image.open(img2)
  h1 = image1.histogram()
  h2 = image2.histogram()
  result = math.sqrt(reduce(operator.add, list(map(lambda a,b: (a-b)**2, h1, h2)))/len(h1) )
  return result
if __name__ == '__main__':
  img1 = "./1.png" # 特定图片路径
  img2 = "./2.png"
  result = image_contrast(img1,img2)
  print(result)

假如二张图片彻底相同,则回到結果为浮点种类“0.0”,如果不同样则回到結果值越大。

一样用上边二张图片,实行結果为38,還是较为小的:

用python实现对比两张图片的不同 图片 对比 python python  第5张

那样就可以在自动化技术功能测试中启用该方式来肯定实行結果。

有关Pillow库的详尽文本文档:

http://pillow.readthedocs.org/en/latest/index.html

小结

之上上述是我给大伙儿详细介绍的用python完成比照二张图片的不一样,期待对大伙儿有一定的协助,假如大伙儿有一切有意者帮我留言板留言,我会立即回应大伙儿的。在这里也特别感谢大伙儿对网址的适用!