MorphGuard / scripts /analyze_metadata.py
juanquy's picture
Initial clean commit of modular MorphGuard
2978bba
Raw
History Blame Contribute Delete
2.05 kB
import os
import sys
from pathlib import Path
from tqdm import tqdm
from PIL import Image, ExifTags
def analyze_metadata(folder_path, label):
folder = Path(folder_path)
if not folder.exists():
return None
images = list(folder.glob("*.jpg")) + list(folder.glob("*.png")) + list(folder.glob("*.jpeg"))
if not images:
return None
print(f"\nAnalyzing Metadata for '{label}' ({folder})...")
has_exif_count = 0
camera_model_count = 0
software_sig_count = 0
# Check first 50
sample = images[:50]
for img_path in tqdm(sample):
try:
img = Image.open(img_path)
exif = img.getexif()
if exif:
has_exif_count += 1
# Check for specific tags
# 271: Make, 272: Model, 305: Software
make = exif.get(271)
model = exif.get(272)
software = exif.get(305)
if make or model:
camera_model_count += 1
if software:
software_sig_count += 1
# print(f" Software: {software} in {img_path.name}")
except Exception as e:
pass
return {
'label': label,
'has_exif_percent': (has_exif_count/len(sample))*100,
'camera_model_percent': (camera_model_count/len(sample))*100
}
def main():
folder_a = "/media/juanquy/Dev/Users photos/"
folder_b = "/media/juanquy/Dev/a small sample/"
res_a = analyze_metadata(folder_a, "Folder A")
res_b = analyze_metadata(folder_b, "Folder B")
print("\nMetaData Analysis Report:")
if res_a:
print(f"{res_a['label']}: Exif={res_a['has_exif_percent']}%, CameraModel={res_a['camera_model_percent']}%")
if res_b:
print(f"{res_b['label']}: Exif={res_b['has_exif_percent']}%, CameraModel={res_b['camera_model_percent']}%")
if __name__ == "__main__":
main()