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

如何按指定比例批量调整目录中图片的尺寸?

批量按指定比例缩放图片并保持宽高比的Python实现

嘿,你的思路方向完全没问题!保持宽高比批量缩放图片其实用Python的Pillow库就能轻松搞定,我给你整理一套完整的实现方案,刚好匹配你的需求:

核心思路说明

你提到的aspectRatio = currentWidth / currentHeight其实已经被自动覆盖了——只要我们按相同的比例同时缩放宽和高,就能完美保留原图片的宽高比,不需要额外计算面积来推导尺寸,直接用原尺寸乘以缩放比例就够了,简单又高效。

完整代码实现

首先确保你已经安装了Pillow库:

pip install pillow

然后是批量处理的代码:

from PIL import Image
import os

def batch_resize_images(input_dir, output_dir, scale_ratio):
    # 创建输出目录(如果不存在)
    os.makedirs(output_dir, exist_ok=True)
    
    # 遍历输入目录下的所有文件
    for filename in os.listdir(input_dir):
        # 过滤常见的图片格式(可根据需要补充)
        if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif')):
            input_path = os.path.join(input_dir, filename)
            output_path = os.path.join(output_dir, filename)
            
            try:
                # 打开图片
                with Image.open(input_path) as img:
                    # 获取原尺寸
                    original_width, original_height = img.size
                    # 计算新尺寸(保持宽高比)
                    new_width = int(original_width * scale_ratio)
                    new_height = int(original_height * scale_ratio)
                    
                    # 缩放图片,使用LANCZOS重采样保证高质量
                    resized_img = img.resize((new_width, new_height), resample=Image.LANCZOS)
                    
                    # 保存处理后的图片
                    resized_img.save(output_path)
                    print(f"已处理:{filename} → 原尺寸{original_width}x{original_height} → 新尺寸{new_width}x{new_height}")
            except Exception as e:
                print(f"处理{filename}时出错:{str(e)}")

# 示例用法
if __name__ == "__main__":
    # 替换成你的输入目录路径
    INPUT_FOLDER = "path/to/your/input/images"
    # 替换成你的输出目录路径
    OUTPUT_FOLDER = "path/to/your/output/resized_images"
    # 指定缩放比例,比如0.25就是缩小到原尺寸的25%
    SCALE_RATIO = 0.25
    
    batch_resize_images(INPUT_FOLDER, OUTPUT_FOLDER, SCALE_RATIO)

关键细节解释

  • 重采样方法:使用Image.LANCZOS是因为它在缩小图片时能提供最高的画质,避免出现锯齿或模糊;如果是放大图片,可以考虑Image.BICUBIC。
  • 格式兼容:代码里过滤了常见的图片格式,你可以根据自己的需求添加或修改后缀(比如.webp)。
  • 异常处理:加入了try-except块,避免单个图片处理失败导致整个批量任务中断。
  • 目录创建:os.makedirs(output_dir, exist_ok=True)会自动创建输出目录,如果目录已经存在也不会报错。

如果你想按目标面积比例来缩放(比如原面积的20%),那可以基于你的思路调整尺寸计算:

# 目标面积比例(比如0.2代表原面积的20%)
area_ratio = 0.2
# 计算缩放比例:面积比例的平方根
scale_ratio = area_ratio ** 0.5
# 后续的尺寸计算和上面一致

这样就能完美匹配你最开始提到的面积推导思路啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:01:21