脚本如何批量调整图片亮度

wen 实用脚本 1

本文目录导读:

脚本如何批量调整图片亮度

  1. 方法一:使用 Python + Pillow(最灵活)
  2. 方法二:使用 OpenCV(适合更多高级处理)
  3. 方法三:使用 ImageMagick(命令行工具)
  4. 方法四:使用 Photoshop 动作(可视化操作)
  5. 方法五:批处理脚本(Windows)
  6. 安装依赖
  7. 高级功能示例

使用 Python + Pillow(最灵活)

from PIL import Image, ImageEnhance
import os
import glob
def batch_adjust_brightness(input_folder, output_folder, brightness_factor):
    """
    批量调整图片亮度
    brightness_factor: 亮度因子,1.0为原始亮度
    >1.0 变亮,<1.0 变暗
    """
    # 创建输出文件夹
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)
    # 支持多种图片格式
    formats = ['*.jpg', '*.jpeg', '*.png', '*.bmp', '*.gif']
    for format in formats:
        for file_path in glob.glob(os.path.join(input_folder, format)):
            # 打开图片
            img = Image.open(file_path)
            # 调整亮度
            enhancer = ImageEnhance.Brightness(img)
            img_bright = enhancer.enhance(brightness_factor)
            # 保存图片
            filename = os.path.basename(file_path)
            output_path = os.path.join(output_folder, filename)
            img_bright.save(output_path)
            print(f"已处理: {filename}")
# 使用示例
batch_adjust_brightness('input_folder', 'output_folder', 1.5)  # 变亮50%

使用 OpenCV(适合更多高级处理)

import cv2
import os
import glob
import numpy as np
def batch_adjust_brightness_opencv(input_folder, output_folder, brightness_value):
    """
    使用OpenCV调整亮度
    brightness_value: -255到255,正值变亮,负值变暗
    """
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)
    for file_path in glob.glob(os.path.join(input_folder, '*')):
        if file_path.lower().endswith(('.jpg', '.jpeg', '.png', '.bmp')):
            # 读取图片
            img = cv2.imread(file_path)
            # 调整亮度
            adjusted = cv2.convertScaleAbs(img, alpha=1, beta=brightness_value)
            # 保存图片
            filename = os.path.basename(file_path)
            output_path = os.path.join(output_folder, filename)
            cv2.imwrite(output_path, adjusted)
            print(f"已处理: {filename}")
# 使用示例
batch_adjust_brightness_opencv('input', 'output', 50)  # 增加亮度50

使用 ImageMagick(命令行工具)

# 批量调整亮度(亮度因子为1.2,即增加20%)
for file in *.jpg; do
  convert "$file" -modulate 120,100,100 "bright_$file"
done
# 或者使用 mogrify 直接修改
mogrify -modulate 120,100,100 *.jpg

使用 Photoshop 动作(可视化操作)

  1. 打开Photoshop
  2. 窗口 > 动作(创建新动作)
  3. 记录调整亮度操作
  4. 文件 > 自动 > 批处理
  5. 选择源文件夹和目标文件夹

批处理脚本(Windows)

@echo off
setlocal enabledelayedexpansion
set input_folder=C:\input
set output_folder=C:\output
set brightness=120
if not exist "%output_folder%" mkdir "%output_folder%"
for %%f in ("%input_folder%\*.*") do (
    echo Processing: %%~nxf
    python -c "
import sys
from PIL import Image, ImageEnhance
img = Image.open(r'%%f')
enhancer = ImageEnhance.Brightness(img)
img_new = enhancer.enhance(%brightness%/100)
img_new.save(r'%output_folder%\%%~nxf')
    "
)
echo 完成!
pause

安装依赖

# 安装 Python 库
pip install Pillow opencv-python
# 安装 ImageMagick (Ubuntu/Debian)
sudo apt-get install imagemagick
# 安装 ImageMagick (macOS)
brew install imagemagick
# 安装 ImageMagick (Windows)
# 下载安装包: https://imagemagick.org/script/download.php

高级功能示例

import os
from PIL import Image, ImageEnhance
import argparse
class BrightnessAdjuster:
    def __init__(self, input_dir, output_dir):
        self.input_dir = input_dir
        self.output_dir = output_dir
    def process_single(self, filename, factor):
        """处理单张图片"""
        img = Image.open(os.path.join(self.input_dir, filename))
        enhancer = ImageEnhance.Brightness(img)
        adjusted = enhancer.enhance(factor)
        # 创建输出目录
        os.makedirs(self.output_dir, exist_ok=True)
        # 保存
        output_path = os.path.join(self.output_dir, filename)
        adjusted.save(output_path)
        return output_path
    def batch_process(self, factor=1.0, pattern="*"):
        """批量处理"""
        import glob
        files = glob.glob(os.path.join(self.input_dir, pattern))
        results = []
        for file_path in files:
            if file_path.lower().endswith(('.jpg', '.png', '.jpeg', '.bmp')):
                filename = os.path.basename(file_path)
                result = self.process_single(filename, factor)
                results.append(result)
                print(f"处理完成: {filename}")
        return results
# 命令行使用
if __name__ == "__main__":
    parser = argparse.ArgumentParser(description='批量调整图片亮度')
    parser.add_argument('input_dir', help='输入文件夹')
    parser.add_argument('output_dir', help='输出文件夹')
    parser.add_argument('--factor', type=float, default=1.5, help='亮度因子 (默认1.5)')
    parser.add_argument('--pattern', default="*", help='文件匹配模式')
    args = parser.parse_args()
    adjuster = BrightnessAdjuster(args.input_dir, args.output_dir)
    adjuster.batch_process(args.factor, args.pattern)

选择建议:

  • 简单使用:ImageMagick 命令行
  • 需要精细控制:Python + Pillow
  • 需要复杂处理:Python + OpenCV
  • 可视化操作:Photoshop 批处理

抱歉,评论功能暂时关闭!