本文目录导读:

- 方案一:使用Python(最灵活、跨平台)
- 方案二:使用ImageMagick(命令行之王)
- 方案三:使用Photoshop动作(Windows/macOS图形化)
- 方案四:使用GraphicsMagick(轻量版ImageMagick)
- 常见问题处理
- 推荐选择
当然可以!批量裁剪图片为统一尺寸是常见的图像处理需求,使用脚本可以高效完成,下面我为你介绍几种主流方法,包括Python、命令行工具和Photoshop脚本。
使用Python(最灵活、跨平台)
Python结合Pillow库是处理图像批量的利器。
安装Pillow库
pip install pillow
批量裁剪脚本(居中裁剪)
此脚本会将指定文件夹内所有图片从中心裁剪到目标尺寸(如 800x600)。
import os
from PIL import Image
def batch_crop_to_size(input_folder, output_folder, target_size=(800, 600)):
"""
批量裁剪图片为统一尺寸(居中裁剪)
:param input_folder: 输入文件夹路径
:param output_folder: 输出文件夹路径
:param target_size: 目标尺寸 (宽, 高)
"""
# 创建输出文件夹
os.makedirs(output_folder, exist_ok=True)
# 支持的图片格式
extensions = ('.jpg', '.jpeg', '.png', '.bmp', '.tiff')
# 遍历输入文件夹
for filename in os.listdir(input_folder):
if filename.lower().endswith(extensions):
input_path = os.path.join(input_folder, filename)
output_path = os.path.join(output_folder, filename)
try:
img = Image.open(input_path)
# 计算裁剪区域(居中裁剪)
width, height = img.size
target_width, target_height = target_size
# 计算起始坐标
left = (width - target_width) // 2
top = (height - target_height) // 2
right = left + target_width
bottom = top + target_height
# 注意:如果图片小于目标尺寸,会报错
# 这里可以添加检查或缩放逻辑
if width < target_width or height < target_height:
# 方法1:缩放图片后再裁剪
img = img.resize(target_size, Image.LANCZOS)
img.save(output_path)
print(f"已缩放并保存: {filename}")
continue
# 裁剪并保存
cropped_img = img.crop((left, top, right, bottom))
cropped_img.save(output_path)
print(f"已裁剪: {filename}")
except Exception as e:
print(f"处理 {filename} 时出错: {e}")
# 使用示例
if __name__ == "__main__":
input_folder = "./input_images" # 替换为你的输入文件夹
output_folder = "./output_images" # 替换为你的输出文件夹
target_size = (800, 600) # 目标尺寸:宽800,高600
batch_crop_to_size(input_folder, output_folder, target_size)
使用ImageMagick(命令行之王)
ImageMagick的mogrify命令可以直接批量处理。
安装ImageMagick
- Windows: 下载安装包 ImageMagick官网
- macOS:
brew install imagemagick - Linux:
sudo apt-get install imagemagick
批量裁剪命令(居中裁剪)
# 进入图片文件夹 cd /path/to/your/images # 创建输出目录 mkdir -p output # 批量裁剪所有jpg为800x600,居中裁剪 magick mogrify -path output -gravity center -crop 800x600+0+0 -resize 800x600 *.jpg
解释:
-path output:输出到output文件夹-gravity center:从中心开始裁剪-crop 800x600+0+0:裁剪尺寸-resize 800x600:先缩放再裁剪(防止图片太小)
对于PNG等其他格式:
magick mogrify -path output -gravity center -crop 800x600+0+0 *.png
使用Photoshop动作(Windows/macOS图形化)
如果你习惯用PS,可以录制动作后批量处理。
- 打开Photoshop,打开一张图片
- 窗口 → 动作(Alt+F9)
- 点击新建动作,命名为“批量裁剪800x600”
- 点击录制,然后进行以下操作:
- 选择裁剪工具,设置宽度800px、高度600px、分辨率300px/英寸
- 裁剪图片到合适区域
- 文件 → 存储(或存储为Web所用格式)
- 关闭图片
- 点击停止录制
- 文件 → 自动 → 批处理:
- 选择刚刚录制的动作
- 源:选择图片文件夹
- 目标:选择输出文件夹
- 勾选“覆盖动作中的‘打开’命令”和“覆盖动作中的‘存储为’命令”
使用GraphicsMagick(轻量版ImageMagick)
# 安装:apt-get install graphicsmagick(Linux) # 批量裁剪 gm mogrify -path output -crop 800x600+0+0 -resize 800x600 *.jpg
常见问题处理
图片小于目标尺寸怎么办?
上述Python脚本中我添加了缩放处理,或者可以跳过:
if width < target_width or height < target_height:
print(f"跳过 {filename}:尺寸太小")
continue
如何按比例填充(而不是裁剪)?
如果想保持原始比例,但填充到目标尺寸(比如添加白边):
from PIL import ImageOps
# 创建新画布
new_img = Image.new('RGB', target_size, (255, 255, 255))
# 缩放图片(保持比例)
img.thumbnail((target_width, target_height), Image.LANCZOS)
# 居中粘贴
paste_x = (target_width - img.width) // 2
paste_y = (target_height - img.height) // 2
new_img.paste(img, (paste_x, paste_y))
new_img.save(output_path)
处理子文件夹?
Python版可以递归遍历:
for root, dirs, files in os.walk(input_folder):
for filename in files:
# ... 处理每个文件
output_path = os.path.join(output_folder, os.path.relpath(input_path, input_folder))
推荐选择
- Python:适合需要自定义处理逻辑(如加水印、重命名)
- ImageMagick:适合纯批量处理,速度最快
- Photoshop:适合一次性任务且熟悉PS操作
你可以根据需求选择最适合的方法,如果需要更复杂的逻辑(如按百分比裁剪、检测人脸裁剪等),可以告诉我具体需求,我可以帮你定制脚本。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播