美文网首页
使用PIL对比两张图片是否相同

使用PIL对比两张图片是否相同

作者: S_jie | 来源:发表于2024-07-20 15:46 被阅读0次
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}%"

相关文章

网友评论

      本文标题:使用PIL对比两张图片是否相同

      本文链接:https://www.haomeiwen.com/subject/lxwjhjtx.html