Ai_GirlFriend/check_outfit_images.py
2026-02-04 18:47:56 +08:00

206 lines
6.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
检查换装图片文件
"""
from pathlib import Path
import hashlib
# 图片源目录
SOURCE_DIR = Path('开发/2026年2月4日/Image')
# 期望的文件列表
EXPECTED_FILES = {
# 上装 - 女性
"女性上衣白色T桖.png": "白色T恤",
"女性-上装-粉丝短袖.png": "粉色短袖",
"女性-上装-蓝色衬衫.png": "蓝色衬衫",
"女性-上装-灰色卫衣.png": "灰色卫衣",
"女性-上装-收费-蕾丝吊带上衣.png": "蕾丝吊带上衣",
"女性-上装-收费-一字领露肩上衣.png": "一字领露肩上衣",
"女性-上装-收费-露脐短袖.png": "露脐短袖",
"女性-上装-收费-针织开衫.png": "针织开衫",
"女性-上装-收费-小香风外套.png": "小香风外套",
"女性-上装-vlp专属-真丝衬衫.png": "真丝衬衫",
# 下装 - 女性
"女性-下衣-蓝色牛仔裤.png": "蓝色牛仔裤",
"女性-下衣-黑色短裙.png": "黑色短裙",
"女性-下衣-白色短裙.png": "白色短裤",
"女性-下衣-灰色运动裤.png": "灰色运动裤",
"女性-下衣-A字半身裙.png": "A字半身裙",
"女性-下衣-高腰阔腿裤.png": "高腰阔腿裤",
"女性-下衣-收费-百褶短裙.png": "百褶短裙",
"女性-下衣-收费-破洞牛仔裤.png": "破洞牛仔裤",
"女性-下衣-收费-西装裤.png": "西装裤",
# 连衣裙 - 女性
"女性-连衣裙-白色连衣裙.png": "白色连衣裙",
"女性-连衣裙-碎花连衣裙.png": "碎花连衣裙",
"女性-连衣裙-黑色小礼服.png": "黑色小礼服",
"女性-连衣裙-优雅长裙.png": "优雅长裙",
"女性-连衣裙-吊带连衣裙.png": "吊带连衣裙",
"女性-连衣裙-JK制服.png": "JK制服",
"女性-连衣裙-汉服.png": "汉服",
"女性-连衣裙-洛丽塔.png": "洛丽塔",
"女性-连衣裙-圣诞服装.png": "圣诞装",
"女性-连衣裙-高级定制婚纱.png": "高级定制婚纱",
}
def get_file_hash(file_path):
"""计算文件 MD5 哈希值"""
md5 = hashlib.md5()
with open(file_path, 'rb') as f:
for chunk in iter(lambda: f.read(4096), b""):
md5.update(chunk)
return md5.hexdigest()
def check_images():
"""检查图片文件"""
print("=" * 70)
print(" 换装图片文件检查")
print("=" * 70)
print()
if not SOURCE_DIR.exists():
print(f"❌ 错误:源目录不存在: {SOURCE_DIR}")
return
# 获取所有 PNG 文件
all_files = list(SOURCE_DIR.glob("*.png"))
print(f"📁 源目录: {SOURCE_DIR}")
print(f"📊 找到 {len(all_files)} 个 PNG 文件")
print()
# 检查期望的文件
print("=" * 70)
print(" 检查期望的文件")
print("=" * 70)
print()
missing_files = []
existing_files = []
file_sizes = {}
for filename, description in EXPECTED_FILES.items():
file_path = SOURCE_DIR / filename
if file_path.exists():
size = file_path.stat().st_size
size_kb = size / 1024
file_sizes[filename] = size
existing_files.append(filename)
if size < 10000: # 小于 10KB 可能是空白或损坏
print(f"⚠️ {description}")
print(f" 文件: {filename}")
print(f" 大小: {size_kb:.1f} KB (可能是空白图片)")
print()
else:
print(f"{description}")
print(f" 文件: {filename}")
print(f" 大小: {size_kb:.1f} KB")
print()
else:
missing_files.append((filename, description))
print(f"{description}")
print(f" 文件: {filename}")
print(f" 状态: 缺失")
print()
# 检查重复的图片(相同内容)
print("=" * 70)
print(" 检查重复的图片")
print("=" * 70)
print()
hash_map = {}
duplicates = []
for filename in existing_files:
file_path = SOURCE_DIR / filename
file_hash = get_file_hash(file_path)
if file_hash in hash_map:
duplicates.append((filename, hash_map[file_hash]))
print(f"⚠️ 发现重复图片:")
print(f" 文件1: {hash_map[file_hash]}")
print(f" 文件2: {filename}")
print(f" 哈希: {file_hash}")
print()
else:
hash_map[file_hash] = filename
if not duplicates:
print("✓ 没有发现重复的图片")
print()
# 检查额外的文件
print("=" * 70)
print(" 检查额外的文件")
print("=" * 70)
print()
expected_filenames = set(EXPECTED_FILES.keys())
actual_filenames = set(f.name for f in all_files)
extra_files = actual_filenames - expected_filenames
if extra_files:
for filename in extra_files:
file_path = SOURCE_DIR / filename
size = file_path.stat().st_size
size_kb = size / 1024
print(f"⚠️ 额外的文件: {filename}")
print(f" 大小: {size_kb:.1f} KB")
print()
else:
print("✓ 没有额外的文件")
print()
# 统计结果
print("=" * 70)
print(" 统计结果")
print("=" * 70)
print()
print(f"期望文件数: {len(EXPECTED_FILES)}")
print(f"存在文件数: {len(existing_files)}")
print(f"缺失文件数: {len(missing_files)}")
print(f"重复图片数: {len(duplicates)}")
print(f"额外文件数: {len(extra_files)}")
print()
# 建议
print("=" * 70)
print(" 建议")
print("=" * 70)
print()
if missing_files:
print("⚠️ 缺失的文件需要补充:")
for filename, description in missing_files:
print(f" - {description} ({filename})")
print()
if duplicates:
print("⚠️ 重复的图片需要替换为不同的图片:")
for file1, file2 in duplicates:
print(f" - {file1}{file2} 内容相同")
print()
# 检查小文件(可能是空白)
small_files = [(f, s) for f, s in file_sizes.items() if s < 10000]
if small_files:
print("⚠️ 以下文件可能是空白或损坏(小于 10KB:")
for filename, size in small_files:
print(f" - {filename} ({size / 1024:.1f} KB)")
print()
if not missing_files and not duplicates and not small_files:
print("✓ 所有图片文件正常!")
print()
if __name__ == "__main__":
check_images()