本文目录导读:

- Python + Pillow (PIL) - 最灵活的方式
- Python + OpenCV - 更专业的色彩处理
- ImageMagick - 命令行高效批量处理
- 批量调整预设风格(完整脚本)
- 使用 GPU 加速(处理大量图片)
- 安装依赖
- 推荐使用场景
Python + Pillow (PIL) - 最灵活的方式
from PIL import Image, ImageEnhance
import os
def batch_adjust_color(input_folder, output_folder, **kwargs):
"""批量调整图片色彩
kwargs 参数:
brightness: 亮度 (0.0-2.0)
contrast: 对比度 (0.0-2.0)
sharpness: 锐度 (0.0-2.0)
color: 色彩饱和度 (0.0-2.0)
"""
if not os.path.exists(output_folder):
os.makedirs(output_folder)
for filename in os.listdir(input_folder):
if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp')):
img_path = os.path.join(input_folder, filename)
img = Image.open(img_path)
# 应用色彩调整
if 'brightness' in kwargs:
enhancer = ImageEnhance.Brightness(img)
img = enhancer.enhance(kwargs['brightness'])
if 'contrast' in kwargs:
enhancer = ImageEnhance.Contrast(img)
img = enhancer.enhance(kwargs['contrast'])
if 'sharpness' in kwargs:
enhancer = ImageEnhance.Sharpness(img)
img = enhancer.enhance(kwargs['sharpness'])
if 'color' in kwargs:
enhancer = ImageEnhance.Color(img)
img = enhancer.enhance(kwargs['color'])
# 保存结果
output_path = os.path.join(output_folder, filename)
img.save(output_path)
print(f"已处理: {filename}")
# 使用示例
batch_adjust_color(
input_folder='source_images/',
output_folder='adjusted_images/',
brightness=1.2, # 增加亮度
contrast=1.1, # 增加对比度
sharpness=1.3, # 增加锐度
color=1.5 # 增加色彩饱和度
)
Python + OpenCV - 更专业的色彩处理
import cv2
import numpy as np
import os
def batch_color_mix(input_folder, output_folder, alpha=1.0, beta=0):
"""批量调整图片色彩混合
alpha: 对比度 (1.0 = 原始)
beta: 亮度 (0 = 原始)
"""
if not os.path.exists(output_folder):
os.makedirs(output_folder)
for filename in os.listdir(input_folder):
if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp')):
img_path = os.path.join(input_folder, filename)
img = cv2.imread(img_path)
# 调整亮度和对比度
adjusted = cv2.convertScaleAbs(img, alpha=alpha, beta=beta)
# 保存结果
output_path = os.path.join(output_folder, filename)
cv2.imwrite(output_path, adjusted)
print(f"已处理: {filename}")
# 更复杂的色彩混合
def batch_color_balance(input_folder, output_folder, r_gain=1.0, g_gain=1.0, b_gain=1.0):
"""批量调整色彩平衡"""
for filename in os.listdir(input_folder):
if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp')):
img_path = os.path.join(input_folder, filename)
img = cv2.imread(img_path)
# 分离色彩通道
b, g, r = cv2.split(img)
# 调整各通道
r = cv2.multiply(r, r_gain)
g = cv2.multiply(g, g_gain)
b = cv2.multiply(b, b_gain)
# 合并通道
adjusted = cv2.merge([b, g, r])
# 确保数值范围
adjusted = np.clip(adjusted, 0, 255).astype(np.uint8)
output_path = os.path.join(output_folder, filename)
cv2.imwrite(output_path, adjusted)
print(f"已处理: {filename}")
# 使用示例
batch_color_mix('input/', 'output/', alpha=1.5, beta=30)
batch_color_balance('input/', 'output/', r_gain=0.9, g_gain=1.1, b_gain=1.2)
ImageMagick - 命令行高效批量处理
# 批量调整亮度/对比度/饱和度
for img in *.jpg; do
convert "$img" \
-brightness-contrast 10x5 \
-modulate 120,150,100 \
"adjusted_$img"
done
# 或使用更简洁的 mogrify(直接修改原文件)
mogrify -path output/ \
-brightness-contrast 10x5 \
-modulate 120,150,100 \
*.jpg
# 高级色彩混合
mogrify -path output/ \
-colorize 30,20,10 \
-color-matrix "1.5 0 0 0 0 0 1.2 0 0 0 0 0 1.1 0 0" \
*.jpg
批量调整预设风格(完整脚本)
import os
from PIL import Image, ImageEnhance, ImageFilter
import json
class BatchColorAdjuster:
def __init__(self, config_file=None):
self.presets = {}
if config_file and os.path.exists(config_file):
with open(config_file, 'r') as f:
self.presets = json.load(f)
def add_preset(self, name, settings):
"""添加预设"""
self.presets[name] = settings
def apply_preset(self, img, preset_name):
"""应用预设"""
if preset_name not in self.presets:
return img
settings = self.presets[preset_name]
# 色彩调整
if 'color' in settings:
enhancer = ImageEnhance.Color(img)
img = enhancer.enhance(settings['color'])
if 'brightness' in settings:
enhancer = ImageEnhance.Brightness(img)
img = enhancer.enhance(settings['brightness'])
if 'contrast' in settings:
enhancer = ImageEnhance.Contrast(img)
img = enhancer.enhance(settings['contrast'])
if 'sharpness' in settings:
enhancer = ImageEnhance.Sharpness(img)
img = enhancer.enhance(settings['sharpness'])
# 色温调整 (使用颜色矩阵)
if 'temperature' in settings:
temp = settings['temperature']
if temp > 0: # 暖色
img = img.point(lambda x: x * (1 + temp * 0.1))
else: # 冷色
img = img.point(lambda x: x * (1 - abs(temp) * 0.1))
return img
def process_folder(self, input_folder, output_folder, preset_name):
"""处理文件夹"""
if not os.path.exists(output_folder):
os.makedirs(output_folder)
for filename in os.listdir(input_folder):
if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp')):
img_path = os.path.join(input_folder, filename)
img = Image.open(img_path)
# 应用预设
img = self.apply_preset(img, preset_name)
# 保存
output_path = os.path.join(output_folder, filename)
img.save(output_path, quality=95)
print(f"已处理: {filename}")
# 使用示例
adjuster = BatchColorAdjuster()
# 添加预设
adjuster.add_preset('vintage', {
'color': 0.7,
'brightness': 0.9,
'contrast': 1.2,
'sharpness': 1.1,
'temperature': 0.3 # 轻微暖色
})
adjuster.add_preset('vivid', {
'color': 1.5,
'brightness': 1.1,
'contrast': 1.2,
'sharpness': 1.2
})
# 批量处理
adjuster.process_folder('input/', 'output/', 'vintage')
使用 GPU 加速(处理大量图片)
import torch
import torchvision.transforms as transforms
from PIL import Image
import os
def batch_gpu_color_adjust(input_folder, output_folder, brightness=1.0, contrast=1.0, saturation=1.0, hue=0):
"""使用 GPU 加速批量色彩调整"""
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
# 定义色彩调整转换
transform = transforms.Compose([
transforms.ColorJitter(
brightness=brightness-1,
contrast=contrast-1,
saturation=saturation-1,
hue=hue
),
])
if not os.path.exists(output_folder):
os.makedirs(output_folder)
for filename in os.listdir(input_folder):
if filename.lower().endswith(('.png', '.jpg', '.jpeg')):
img_path = os.path.join(input_folder, filename)
img = Image.open(img_path).convert('RGB')
# 应用转换
adjusted = transform(img)
# 保存
output_path = os.path.join(output_folder, filename)
adjusted.save(output_path)
print(f"已处理: {filename}")
安装依赖
# Pillow pip install Pillow # OpenCV pip install opencv-python # ImageMagick (需要安装) # Windows: 下载安装包 # Mac: brew install imagemagick # Linux: sudo apt-get install imagemagick # PyTorch (GPU加速) pip install torch torchvision
推荐使用场景
- 简单快速:使用 ImageMagick 命令行
- 灵活定制:使用 Python + Pillow
- 专业处理:使用 Python + OpenCV
- 批量预设:使用完整的 Python 脚本框架
- 超大量图片:使用 GPU 加速方案
选择最适合你需求的方案,可以根据需要进行组合修改!