# crop_left_512.py import os from PIL import Image INPUT_DIR = "./picture" # 原图文件夹 OUTPUT_DIR = "./picture_resized" # 输出文件夹 TARGET_H = 1536 # 目标高度(像素) CROP_W = 512 # 只保留左侧 [0, 512) 宽度 os.makedirs(OUTPUT_DIR, exist_ok=True) def is_img(name): return name.lower().endswith((".jpg", ".jpeg", ".png", ".bmp", ".webp", ".tif", ".tiff")) for fname in os.listdir(INPUT_DIR): if not is_img(fname): continue src = os.path.join(INPUT_DIR, fname) dst = os.path.join(OUTPUT_DIR, fname) try: with Image.open(src) as im: im = im.convert("RGB") # 1) 若高度不是 1536,先按比例把高度调整到 1536(宽度等比变化) if im.height != TARGET_H: new_w = round(im.width * TARGET_H / im.height) im = im.resize((new_w, TARGET_H), Image.BICUBIC) # 2) 若宽度不足 512,跳过并提示;否则裁剪左侧 0~512 宽度 if im.width < CROP_W: print(f"[SKIP] {fname}: width {im.width} < {CROP_W}") continue left_crop = im.crop((0, 0, CROP_W, TARGET_H)) # (left, top, right, bottom) left_crop.save(dst) print(f"[OK] {fname} -> {dst}") except Exception as e: print(f"[ERR] {fname}: {e}") print("✅ 完成:已将左侧 0-512 宽度裁剪并输出到", OUTPUT_DIR)