脚本如何批量调整图片色彩滤镜

wen 实用脚本 28

本文目录导读:

脚本如何批量调整图片色彩滤镜

  1. 准备工作:安装 Python 和 Pillow
  2. 通用 Python 脚本 (adjust_image_colors.py)
  3. 如何使用这个脚本
  4. 其他工具方案 (如果你不想写代码)

我需要更多信息才能给出具体的脚本方案,图片色彩滤镜的调整方式有很多种,不同的需求对应不同的实现方法。

请告诉我以下几个关键点:

  1. 你想调整什么? (色相、饱和度、亮度、对比度、色温、或者直接应用一个预设滤镜如“怀旧”、“黑白”、“冷色”等)
  2. 图片格式是什么? (.jpg, .png, .webp)
  3. 你熟悉哪种脚本语言或工具?
    • Python (+ Pillow, OpenCV, numpy): 功能强大,适合批量处理复杂效果。
    • ImageMagick (命令行工具, convert/magick): 非常高效,适合批量处理,语法简洁。
    • Photoshop 动作 (Action) + 批处理: 如果你习惯用PS,这是最直接的方式。
    • Shell 脚本 (Linux/Mac): 结合 sips (Mac) 或 ImageMagick。
    • 其他工具: 如 ffmpeg (主要用于视频,但也支持图片序列处理)。

以下提供一个最通用的 Python 脚本示例,使用 Pillow 库,它可以实现常见的色彩调整。


准备工作:安装 Python 和 Pillow

如果你选择 Python 方案,需要先安装 Pillow 库:

pip install Pillow

通用 Python 脚本 (adjust_image_colors.py)

这个脚本会读取一个文件夹中的所有图片,应用你指定的色彩调整,然后保存到另一个文件夹。

import os
from PIL import Image, ImageEnhance, ImageFilter, ImageOps
import argparse
def adjust_color_filter(image_path, output_path, 
                        brightness=1.0, contrast=1.0, saturation=1.0, 
                        sharpness=1.0, hue_shift=0, 
                        to_grayscale=False, invert=False,
                        sepia=False):
    """
    调整图片色彩滤镜。
    参数:
        image_path: 输入图片路径
        output_path: 输出图片路径
        brightness: 亮度 (0.0 ~ 无穷大, 1.0 表示不变)
        contrast: 对比度 (0.0 ~ 无穷大, 1.0 表示不变)
        saturation: 饱和度 (0.0 ~ 无穷大, 1.0 表示不变)
        sharpness: 锐度 (0.0 ~ 无穷大, 1.0 表示不变)
        hue_shift: 色相偏移 (0-360, 0 表示不变)
        to_grayscale: 是否转为灰度图 (bool)
        invert: 是否反转颜色 (bool)
        sepia: 是否应用怀旧/复古色调 (bool)
    """
    try:
        img = Image.open(image_path).convert("RGB")  # 确保是RGB模式
        # 1. 色相偏移 (使用 HSV 色彩空间)
        if hue_shift != 0:
            hsv_img = img.convert("HSV")
            h, s, v = hsv_img.split()
            # 色相值范围是 0-255,对应 0-360 度,需要转换
            h = h.point(lambda i: (i + int(hue_shift * 255 / 360)) % 255)
            hsv_img = Image.merge("HSV", (h, s, v))
            img = hsv_img.convert("RGB")
        # 2. 饱和度调整
        if saturation != 1.0:
            enhancer = ImageEnhance.Color(img)
            img = enhancer.enhance(saturation)
        # 3. 对比度调整
        if contrast != 1.0:
            enhancer = ImageEnhance.Contrast(img)
            img = enhancer.enhance(contrast)
        # 4. 亮度调整
        if brightness != 1.0:
            enhancer = ImageEnhance.Brightness(img)
            img = enhancer.enhance(brightness)
        # 5. 锐度调整
        if sharpness != 1.0:
            enhancer = ImageEnhance.Sharpness(img)
            img = enhancer.enhance(sharpness)
        # 6. 转为灰度图
        if to_grayscale:
            img = img.convert("L").convert("RGB")  # 转灰再转回RGB保持尺寸
        # 7. 反色
        if invert:
            img = ImageOps.invert(img)
        # 8. 怀旧风格 (Sepia)
        if sepia:
            # 简单的Sepia效果:将图片转为灰度,然后应用棕色调色板
            gray = img.convert("L")
            # 创建一个新的 RGB 图像
            sepia_img = Image.new("RGB", img.size)
            width, height = img.size
            for x in range(width):
                for y in range(height):
                    gray_val = gray.getpixel((x, y))
                    # 应用 Sepia 色调公式
                    r = min(int(gray_val * 1.0), 255)
                    g = min(int(gray_val * 0.8), 255)
                    b = min(int(gray_val * 0.6), 255)
                    sepia_img.putpixel((x, y), (r, g, b))
            img = sepia_img
        # 保存结果
        img.save(output_path)
        print(f"处理完成: {os.path.basename(image_path)} -> {os.path.basename(output_path)}")
        return True
    except Exception as e:
        print(f"处理失败 {image_path}: {e}")
        return False
def batch_process(input_dir, output_dir, 
                  brightness=1.0, contrast=1.0, saturation=1.0,
                  sharpness=1.0, hue_shift=0,
                  to_grayscale=False, invert=False, sepia=False):
    """
    批量处理文件夹中的所有图片。
    """
    if not os.path.exists(output_dir):
        os.makedirs(output_dir)
    supported_extensions = ('.jpg', '.jpeg', '.png', '.bmp', '.tiff', '.webp')
    processed_count = 0
    for filename in os.listdir(input_dir):
        if filename.lower().endswith(supported_extensions):
            input_path = os.path.join(input_dir, filename)
            output_path = os.path.join(output_dir, filename)
            success = adjust_color_filter(
                input_path, output_path,
                brightness=brightness,
                contrast=contrast,
                saturation=saturation,
                sharpness=sharpness,
                hue_shift=hue_shift,
                to_grayscale=to_grayscale,
                invert=invert,
                sepia=sepia
            )
            if success:
                processed_count += 1
    print(f"\n批量处理完成!共处理 {processed_count} 张图片。")
# ==================== 使用方法示例 ====================
if __name__ == "__main__":
    # 方式一:直接修改脚本中的参数运行
    # 请修改为你的文件夹路径
    input_folder = "./input_images"   # 原始图片文件夹
    output_folder = "./output_images" # 处理后图片文件夹
    # 调用批量处理函数,自定义参数
    batch_process(
        input_dir=input_folder,
        output_dir=output_folder,
        brightness=1.2,       # 亮度增加 20%
        contrast=1.1,         # 对比度增加 10%
        saturation=1.3,       # 饱和度增加 30%
        sharpness=1.0,        # 不调整锐度
        hue_shift=30,         # 色相偏移 30 度 (使其偏暖)
        to_grayscale=False,   # 不转灰度
        invert=False,         # 不反色
        sepia=False           # 不应用怀旧风格
    )
    # 方式二:如果想让图片变成"冷色调",可以使用:
    # batch_process(
    #     input_dir=input_folder,
    #     output_dir=output_folder,
    #     brightness=0.9,
    #     saturation=0.8,
    #     hue_shift=210,  # 蓝色区域
    # )
    # 方式三:一键变成灰度图:
    # batch_process(
    #     input_dir=input_folder,
    #     output_dir=output_folder,
    #     to_grayscale=True,
    # )

如何使用这个脚本

  1. 保存脚本:将上面的代码保存为一个 .py 文件,adjust_colors.py
  2. 准备文件夹
    • 创建一个文件夹 input_images,把你的图片放进去。
    • 脚本会自动创建 output_images 文件夹保存结果。
  3. 修改参数:在 batch_process(...) 调用中设置你想要的参数。
    • 数值 0 表示不变。
    • 大于 0 表示增强。
    • 小于 0 表示减弱。
    • hue_shift 范围 0-360
    • 开关参数 (to_grayscale, invert, sepia) 设为 TrueFalse
  4. 运行
    python adjust_colors.py

其他工具方案 (如果你不想写代码)

使用 ImageMagick (命令行)

这是一个非常强大的命令行工具,适合快速批量处理。

# 安装 ImageMagick (Mac: brew install imagemagick, Linux: apt install imagemagick)
# 然后在一个文件夹中运行:
# 例1:所有jpg图片饱和度和对比度增加20%
magick mogrify -path ./output -saturation 120 -contrast 120 *.jpg
# 例2:转为灰度图
magick mogrify -path ./output -colorspace Gray *.png
# 例3:调整色相 (需要转换到HCL或HSL再转回来,稍复杂)
# 或者使用更简单的 -modulate (亮度,饱和度,色相):
# -modulate 亮度%,饱和度%,色相度
magick mogrify -path ./output -modulate 100,150,90 *.jpg
# (饱和度增加50%,色相偏移 -10 度)
# 例4:应用怀旧滤镜
magick mogrify -path ./output -sepia-tone 80% *.jpg

在 ImageMagick 所在的目录(或系统PATH中),可以写一个简单的 Shell 循环来实现更复杂的批量处理。

Photoshop 批处理

  1. 打开一张图片,录制一个“动作”(Window > Actions)。
  2. 调整你想要的色彩(图像 > 调整 > 色相/饱和度、色彩平衡等)。
  3. 停止录制。
  4. File > Automate > Batch...
  5. 选择源文件夹、目标文件夹,选择你录制的动作。
  6. 点击 OK 即可批量处理。

请告诉我你的具体需求(想改成什么效果?用什么工具?),我可以提供更精准的脚本。

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