'commit'
This commit is contained in:
@@ -36,6 +36,29 @@ def get_file_md5(file_path):
|
||||
return hash_md5.hexdigest()
|
||||
|
||||
|
||||
def get_image_content_md5(file_path, top_ratio=0.1, bottom_ratio=0.1):
|
||||
"""
|
||||
计算图片核心内容的 MD5 值(排除状态栏和导航栏)
|
||||
"""
|
||||
img = read_image(file_path)
|
||||
if img is None:
|
||||
return None
|
||||
|
||||
h, w = img.shape[:2]
|
||||
top = int(h * top_ratio)
|
||||
bottom = int(h * (1 - bottom_ratio))
|
||||
|
||||
# 裁剪中间部分
|
||||
content = img[top:bottom, :]
|
||||
|
||||
# 将图片数据转换为字节流计算 MD5
|
||||
# 使用 cv2.imencode 转为 jpg 字节流,避免原始 numpy 数组可能的细微差异(虽然通常没问题)
|
||||
success, encoded_img = cv2.imencode(".jpg", content)
|
||||
if success:
|
||||
return hashlib.md5(encoded_img.tobytes()).hexdigest()
|
||||
return hashlib.md5(content.tobytes()).hexdigest()
|
||||
|
||||
|
||||
def read_image(path):
|
||||
"""读取图片,支持中文路径"""
|
||||
if not path or not os.path.exists(path):
|
||||
|
||||
Reference in New Issue
Block a user