吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2|回复: 0
收起左侧

[Python 原创] 批量裁剪图片不同大小空白

[复制链接]
ruanyang2 发表于 2026-8-19 16:14
工作需要,经常有堆图片需要裁剪,底部空白大小又不一样,文件大小1.13K,论坛找了下也没翻到,压缩包整合了一下所需东西,通过网盘分享的文件:trim_bottom.7z
链接: https://pan.baidu.com/s/1LlgLFRiZEhATunMkofZJxA?pwd=k7ab 提取码: k7ab 复制这段内容后打开百度网盘手机App,操作更方便哦
--来自百度网盘超级会员v1的分享

import os
from PIL import Image, ImageChops, ImageOps

INPUT_DIR = "input"      # 原图文件夹
OUTPUT_DIR = "output"    # 输出文件夹
THRESHOLD = 10           # 背景差异阈值,0-255,越小越严格
PADDING = 0              # 底部额外保留的空白像素,默认0

os.makedirs(OUTPUT_DIR, exist_ok=True)

for fname in os.listdir(INPUT_DIR):
if not fname.lower().endswith((".png", ".jpg", ".jpeg", ".bmp", ".webp")):
continue

path = os.path.join(INPUT_DIR, fname)
try:
    img = Image.open(path)
    img = ImageOps.exif_transpose(img)  # 修正手机照片方向

    # 如果有透明通道,用 alpha 判断内容
    if img.mode in ("RGBA", "LA") and img.getchannel("A").getextrema() != (255, 255):
        mask = img.getchannel("A").point(lambda p: 255 if p > 0 else 0)
    else:
        rgb = img.convert("RGB")
        # 取右下角像素颜色作为背景色,适合纯色背景
        bg_color = rgb.getpixel((rgb.width - 1, rgb.height - 1))
        bg = Image.new("RGB", rgb.size, bg_color)
        diff = ImageChops.difference(rgb, bg).convert("L")
        mask = diff.point(lambda p: 255 if p > THRESHOLD else 0)

    bbox = mask.getbbox()
    if bbox is None:
        print(f"{fname}: 未检测到内容,跳过")
        continue

    bottom = min(bbox[3] + 1 + PADDING, img.height)
    cropped = img.crop((0, 0, img.width, bottom))

    if fname.lower().endswith((".jpg", ".jpeg")):
        cropped = cropped.convert("RGB")

    out_path = os.path.join(OUTPUT_DIR, fname)
    cropped.save(out_path)
    print(f"{fname}: 底部裁到 {bottom}px")

except Exception as e:
    print(f"{fname}: 处理失败 - {e}")

参数说明
  • THRESHOLD:如果空白处有轻微杂色或阴影,可以调大,例如 20-30。
  • PADDING:如果想在底部留一点空白,设置成 5 或 10。
  • 如果右下角不是空白背景,请把 bg_color = ... 改成固定颜色,例如 bg_color = (255, 255, 255)。
ScreenShot_2026-08-19_155939_295.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-8-19 16:14

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表