519 字
3 分钟
图片方向分类脚本
2025-08-04

前言#

前面已经把图片爬回来了,但我是以移动设备和非移动设备进行输出,所以要将爬回来的图片进行分类

然后又让 DeepSeek 写了个python脚本


准备#

安装依赖:pip install pillow


脚本#

创建一个py文件然后把脚本复制进去

在py文件同一目录创建一个 input 文件夹,将要分类的图片复制进去

运行脚本后将自动分类

支持所有图片格式(webp/jpg/png等),自动保留原始格式

import os
import shutil
from PIL import Image
import argparse
import time

def classify_images(input_dir, horizontal_dir, vertical_dir):
    """
    分类图片到横图/竖图目录,跳过方形图
    :param input_dir: 输入图片目录
    :param horizontal_dir: 横图输出目录
    :param vertical_dir: 竖图输出目录
    """
    # 支持的图片扩展名
    supported_ext = ('.png', '.jpg', '.jpeg', '.webp', '.bmp', '.gif', '.tiff')

    # 创建输出目录
    os.makedirs(horizontal_dir, exist_ok=True)
    os.makedirs(vertical_dir, exist_ok=True)

    # 遍历所有文件
    for filename in os.listdir(input_dir):
        filepath = os.path.join(input_dir, filename)

        # 检查是否为文件且支持该格式
        if not os.path.isfile(filepath):
            continue

        ext = os.path.splitext(filename)[1].lower()
        if ext not in supported_ext:
            continue

        try:
            # 打开图片并获取尺寸
            with Image.open(filepath) as img:
                width, height = img.size

                # 分类逻辑
                if width > height:  # 横图
                    shutil.copy2(filepath, os.path.join(horizontal_dir, filename))
                    print(f"横图: {filename} ({width}x{height})")
                elif height > width:  # 竖图
                    shutil.copy2(filepath, os.path.join(vertical_dir, filename))
                    print(f"竖图: {filename} ({width}x{height})")
                else:  # 方形图不处理
                    print(f"方形图跳过: {filename} ({width}x{height})")

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

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description='图片方向分类工具')
    parser.add_argument('--input', type=str, default='./input', help='输入图片目录 (默认: ./input)')
    parser.add_argument('--horizontal', type=str, default='./horizontal', help='横图输出目录 (默认: ./horizontal)')
    parser.add_argument('--vertical', type=str, default='./vertical', help='竖图输出目录 (默认: ./vertical)')

    args = parser.parse_args()

    print("="*50)
    print(f"输入目录: {args.input}")
    print(f"横图目录: {args.horizontal}")
    print(f"竖图目录: {args.vertical}")
    print("="*50)

    classify_images(
        input_dir=args.input,
        horizontal_dir=args.horizontal,
        vertical_dir=args.vertical
    )

    print("处理完成,等待 60 秒后退出...")
    time.sleep(60)  # 等待 60 秒

使用延申#

脚本使用复制操作而非移动,如需改为移动文件,可将 shutil.copy2 替换为 shutil.move

文件夹树状图

text
├── classify_images.py
├── input/        (存放原始图片)
├── horizontal/   (自动创建 - 存放横图)
└── vertical/     (自动创建 - 存放竖图)
图片方向分类脚本
作者
水沐风
发布于
2025-08-04
许可协议
CC BY-NC-SA 4.0