本文目录导读:

我需要更多信息才能给出具体的脚本方案,图片色彩滤镜的调整方式有很多种,不同的需求对应不同的实现方法。
请告诉我以下几个关键点:
- 你想调整什么? (色相、饱和度、亮度、对比度、色温、或者直接应用一个预设滤镜如“怀旧”、“黑白”、“冷色”等)
- 图片格式是什么? (.jpg, .png, .webp)
- 你熟悉哪种脚本语言或工具?
- 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,
# )
如何使用这个脚本
- 保存脚本:将上面的代码保存为一个
.py文件,adjust_colors.py。 - 准备文件夹:
- 创建一个文件夹
input_images,把你的图片放进去。 - 脚本会自动创建
output_images文件夹保存结果。
- 创建一个文件夹
- 修改参数:在
batch_process(...)调用中设置你想要的参数。- 数值
0表示不变。 - 大于
0表示增强。 - 小于
0表示减弱。 hue_shift范围0-360。- 开关参数 (
to_grayscale,invert,sepia) 设为True或False。
- 数值
- 运行:
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 批处理
- 打开一张图片,录制一个“动作”(Window > Actions)。
- 调整你想要的色彩(图像 > 调整 > 色相/饱和度、色彩平衡等)。
- 停止录制。
- File > Automate > Batch...
- 选择源文件夹、目标文件夹,选择你录制的动作。
- 点击 OK 即可批量处理。
请告诉我你的具体需求(想改成什么效果?用什么工具?),我可以提供更精准的脚本。