画像チェッカー by 【chatGPT】様 | 60歳を迎えて、思うこと。

60歳を迎えて、思うこと。

いつの間にか、「60」という年月が経ちました。
残り少ないか多いか?わかりませんが。
じじぃ~の「ひとりごと」を細々と続けられれば。。。

画像チェッカー by 【chatGPT】様

画像チェッカー by 【chatGPT】様

online Backup

windows 11
pythonスクリプト

# ==== 【chatGPT】
## ✅ 改良済み安全バージョン(誤検出対策)


import os

def get_file_type(path):
    try:
        with open(path, "rb") as f:
            sig = f.read(32)  # ← 少し拡大して精度UP
    except Exception:
        return "Unreadable"

    if sig.startswith(b"\x89PNG"):
        return "PNG"
    elif sig.startswith(b"\xFF\xD8"):
        return "JPEG"
    elif sig.startswith(b"RIFF") and b"WEBP" in sig:
        return "WEBP"
    elif sig[:2] == b"BM":
        return "BMP"
    elif sig[:4] in (b"II*\x00", b"MM\x00*"):
        return "TIFF"
    elif sig.startswith(b"GIF8"):
        return "GIF"
    elif sig.startswith(b"%PDF"):
        return "PDF"
    elif sig.startswith(b"\x00\x00\x01\x00"):
        return "ICO"
    else:
        return "Unknown"

folder = r"S:\___ext_chk"
log_path = os.path.join(folder, "偽装可能性.txt")
found = 0

with open(log_path, "w", encoding="utf-8") as log:
    for root, _, files in os.walk(folder):
        for file in files:
            path = os.path.join(root, file)
            ext = os.path.splitext(file)[1][1:].upper()

            # 💡 同義語正規化
            if ext == "JPG":
                ext = "JPEG"

            real_type = get_file_type(path)

            if real_type != "Unreadable" and real_type != "Unknown" and real_type != ext:
                found += 1
                log.write(f"{path}\n  ↳ 拡張子={ext or '(なし)'}, 実体={real_type}\n\n")

print(f"✅ チェック完了!{found} 件の偽装可能性ファイルを発見しました。")
print(f"📄 結果ログ: {log_path}")

# ==== おわり

## 🔍 まとめ
# | 問題箇所         | 内容     | 状態     |
# | ------------ | ------ | ------ |
# | JPEG↔JPG 同一視 | 誤検出の主因 | ❌ 修正必須 |
# | ログパス         | パス誤り   | ❌ 修正済  |
# | WEBP判定       | 精度低    | ⚠ 修正推奨 |
# | Unknown除外    | 微妙     | ⚙ 任意改善 |

# 🧠 **最重要:**
# > 偽装検出が多発した原因は「JPGがJPEG扱いされない」ことが主因です。
# > 判定ロジック自体は正しい(シグネチャは正確)ですが、
# > 拡張子との突き合わせルールが甘かったために“偽装っぽく”見えただけです。
# # ==============================
無償の労働力に 心から 感謝♪

じじぃ~