def diff_img(check_img, original_img_path):
"""
check_img: 被检测图片
original_img_path: 基准图
"""
try:
# 先将转换图像为灰度,减少比较的复杂性, 再将图像转换为列表,进行像素级比较
img_one = Image.open(check_img).convert('L').histogram()
img_tow = Image.open(original_img_path).convert('L').histogram()
except Exception:
res = compare_svgs(check_img, original_img_path)
print(f'.svg图片检测结果: {check_img.split("/")[-1]},相似度: {res}')
else:
res = math.sqrt(reduce(operator.add, list(map(lambda a, b: (a - b) ** 2, img_one, img_tow))) / len(img_one))
print(f'.png图片检测结果: {check_img.split("/")[-1]},相似度: {res}')
return res
def compare_svgs(file1, file2):
"""
检测.svg格式
"""
with open(file1, 'r') as f1, open(file2, 'r') as f2:
text1 = f1.read()
text2 = f2.read()
similarity = SequenceMatcher(None, text1, text2).ratio()
res = 100 - similarity * 100
return f"文件差异百分比: {res:.2f}%"
网友评论