You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何快速批量裁剪3840x2160图片为9张1280x720图并制作Windows工具

批量高速裁剪4K图片为9张1080P小图方案

工具速度对比

针对数千张3840x2160图片的批量裁剪需求,各工具速度优先级从高到低为:

  • ffmpeg:底层C实现,命令行批量处理效率极高,是首选方案
  • ImageMagick:优化后的命令行工具,速度略逊于ffmpeg,但优于Python库
  • image_slicer/PIL:纯Python单线程实现,加载处理单张图耗时久,数千张图场景下速度最慢

所有方案均支持无损保留原图细节,不会丢失小物体信息。


最快实现:ffmpeg批量裁剪脚本

单张图片裁剪命令

针对单张4K图,直接执行以下ffmpeg命令(需提前安装ffmpeg并加入系统PATH):

ffmpeg -i input.png -filter_complex "
split=9[v0][v1][v2][v3][v4][v5][v6][v7][v8];
[v0]crop=1280:720:0:0[out0];
[v1]crop=1280:720:1280:0[out1];
[v2]crop=1280:720:2560:0[out2];
[v3]crop=1280:720:0:720[out3];
[v4]crop=1280:720:1280:720[out4];
[v5]crop=1280:720:2560:720[out5];
[v6]crop=1280:720:0:1440[out6];
[v7]crop=1280:720:1280:1440[out7];
[v8]crop=1280:720:2560:1440[out8]
" -map "[out0]" input_01.png -map "[out1]" input_02.png -map "[out2]" input_03.png -map "[out3]" input_04.png -map "[out4]" input_05.png -map "[out5]" input_06.png -map "[out6]" input_07.png -map "[out7]" input_08.png -map "[out8]" input_09.png -q:v 1

参数说明:-q:v 1 表示最高质量输出,完全保留原图细节。

批量处理Bat脚本

将以下代码保存为crop_images.bat,支持拖入文件夹或输入路径批量处理:

@echo off
setlocal enabledelayedexpansion

set "input_dir=%~1"
if not defined input_dir (
    echo 请拖入图片文件夹或输入文件夹路径:
    set /p input_dir=
)

mkdir "%input_dir%\cropped" 2>nul

for %%f in ("%input_dir%\*.png" "%input_dir%\*.jpg" "%input_dir%\*.jpeg") do (
    if exist "%%f" (
        set "filename=%%~nf"
        set "extension=%%~xf"
        ffmpeg -i "%%f" -filter_complex "
split=9[v0][v1][v2][v3][v4][v5][v6][v7][v8];
[v0]crop=1280:720:0:0[out0];
[v1]crop=1280:720:1280:0[out1];
[v2]crop=1280:720:2560:0[out2];
[v3]crop=1280:720:0:720[out3];
[v4]crop=1280:720:1280:720[out4];
[v5]crop=1280:720:2560:720[out5];
[v6]crop=1280:720:0:1440[out6];
[v7]crop=1280:720:1280:1440[out7];
[v8]crop=1280:720:2560:1440[out8]
" -map "[out0]" "%input_dir%\cropped\!filename!_01!extension!" -map "[out1]" "%input_dir%\cropped\!filename!_02!extension!" -map "[out2]" "%input_dir%\cropped\!filename!_03!extension!" -map "[out3]" "%input_dir%\cropped\!filename!_04!extension!" -map "[out4]" "%input_dir%\cropped\!filename!_05!extension!" -map "[out5]" "%input_dir%\cropped\!filename!_06!extension!" -map "[out6]" "%input_dir%\cropped\!filename!_07!extension!" -map "[out7]" "%input_dir%\cropped\!filename!_08!extension!" -map "[out8]" "%input_dir%\cropped\!filename!_09!extension!" -q:v 1 -hide_banner -loglevel error
        echo 处理完成:%%f
    )
)

echo 所有图片处理完毕,结果保存在 "%input_dir%\cropped"
pause

转成Windows可执行文件

使用Bat to Exe Converter这类工具,将上述bat脚本转换为exe文件,同时将ffmpeg的ffmpeg.exe放在同一目录下,用户即可无需安装依赖直接运行。


备选方案:ImageMagick批量裁剪

如果偏好ImageMagick,单张图命令更简洁:

magick input.png -crop 1280x720@ +repage +adjoin input_%02d.png

批量处理的Bat脚本只需将ffmpeg命令替换为上述magick命令即可,速度略慢于ffmpeg,但仍远快于Python方案。


Python方案(不推荐批量场景)

如果坚持用Python,image_slicer代码如下,适合少量图片:

import os
from image_slicer import slice

input_dir = input("请输入图片文件夹路径:")
output_dir = os.path.join(input_dir, "cropped")
os.makedirs(output_dir, exist_ok=True)

for filename in os.listdir(input_dir):
    ext = filename.lower().split('.')[-1]
    if ext in ('png', 'jpg', 'jpeg'):
        img_path = os.path.join(input_dir, filename)
        tiles = slice(img_path, 9, save=False)
        base_name = os.path.splitext(filename)[0]
        for tile in tiles:
            tile.save(os.path.join(output_dir, f"{base_name}_{tile.number:02d}.{ext}"))
        print(f"处理完成:{filename}")

print("所有图片处理完毕")

用pyinstaller --onefile --windowed script.py可打包为exe,但数千张图场景下速度极慢。

内容的提问来源于stack exchange,提问作者bit_scientist

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 11:01:03