本文目录导读:

import os
from PIL import Image, ImageEnhance
def batch_adjust_saturation(input_dir, output_dir, saturation_factor=1.5):
"""
批量调整图片饱和度
参数:
input_dir (str): 输入图片文件夹路径
output_dir (str): 输出图片文件夹路径
saturation_factor (float): 饱和度调整因子
1.0 = 原始饱和度
< 1.0 = 降低饱和度 (0.0 = 灰度)
> 1.0 = 增加饱和度
"""
# 确保输出文件夹存在
os.makedirs(output_dir, exist_ok=True)
# 支持的图片格式
supported_formats = ('.jpg', '.jpeg', '.png', '.bmp', '.tiff', '.webp')
# 遍历输入文件夹
for filename in os.listdir(input_dir):
if filename.lower().endswith(supported_formats):
input_path = os.path.join(input_dir, filename)
output_path = os.path.join(output_dir, filename)
try:
# 打开图片
img = Image.open(input_path)
# 转换为RGB模式(如果是RGBA,保留alpha通道)
if img.mode == 'RGBA':
# 分离通道
r, g, b, a = img.split()
rgb_img = Image.merge('RGB', (r, g, b))
# 调整饱和度
enhancer = ImageEnhance.Color(rgb_img)
enhanced_rgb = enhancer.enhance(saturation_factor)
# 重新合并alpha通道
enhanced_img = Image.merge('RGBA', (*enhanced_rgb.split(), a))
else:
# 转为RGB(处理灰度图等情况)
if img.mode != 'RGB':
img = img.convert('RGB')
enhancer = ImageEnhance.Color(img)
enhanced_img = enhancer.enhance(saturation_factor)
# 保存图片
enhanced_img.save(output_path)
print(f"已处理: {filename}")
except Exception as e:
print(f"处理失败 {filename}: {str(e)}")
if __name__ == "__main__":
# 使用示例
input_folder = "input_images" # 输入文件夹
output_folder = "output_images" # 输出文件夹
# 设置饱和度调整因子
# 1.5 = 增加50%饱和度
# 0.5 = 降低50%饱和度
# 0.0 = 完全去色(灰度)
saturation_adjustment = 1.5
batch_adjust_saturation(input_folder, output_folder, saturation_adjustment)
print("处理完成!")
使用说明
安装依赖
pip install Pillow
目录结构
项目文件夹/
├── input_images/ # 存放待处理的图片
├── output_images/ # 处理后图片输出位置(自动创建)
└── script.py # 上述脚本
调整参数
修改 saturation_adjustment 变量的值:
- 0 = 保持原饱和度
- 5 = 增加 50%(更鲜艳)
- 0 = 增加 100%(双倍饱和)
- 5 = 减少 50%(更柔和)
- 0 = 完全去色(黑白)
运行脚本
python script.py
进阶版本(带命令行参数)
import os
import argparse
from PIL import Image, ImageEnhance
def adjust_saturation(input_dir, output_dir, factor, overwrite=False):
os.makedirs(output_dir, exist_ok=True)
supported = ('.jpg', '.jpeg', '.png', '.bmp', '.tiff', '.webp')
processed = 0
failed = 0
for filename in os.listdir(input_dir):
if not filename.lower().endswith(supported):
continue
input_path = os.path.join(input_dir, filename)
output_path = os.path.join(output_dir, filename)
if os.path.exists(output_path) and not overwrite:
print(f"跳过已存在: {filename}")
continue
try:
img = Image.open(input_path)
# 处理带透明通道的图片
if img.mode == 'RGBA':
rgb = img.convert('RGB')
enhancer = ImageEnhance.Color(rgb)
enhanced_rgb = enhancer.enhance(factor)
# 重新添加alpha通道
r, g, b = enhanced_rgb.split()
_, _, _, a = img.split()
result = Image.merge('RGBA', (r, g, b, a))
else:
if img.mode != 'RGB':
img = img.convert('RGB')
enhancer = ImageEnhance.Color(img)
result = enhancer.enhance(factor)
result.save(output_path)
processed += 1
print(f"✓ {filename}")
except Exception as e:
failed += 1
print(f"✗ {filename}: {e}")
print(f"\n完成!处理 {processed} 个文件,失败 {failed} 个")
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="批量调整图片饱和度")
parser.add_argument("input_dir", help="输入图片文件夹路径")
parser.add_argument("-o", "--output", default="output", help="输出文件夹路径(默认: output)")
parser.add_argument("-f", "--factor", type=float, default=1.5,
help="饱和度调整因子(默认: 1.5,范围: 0.0-3.0)")
parser.add_argument("--overwrite", action="store_true",
help="覆盖已存在的文件")
args = parser.parse_args()
# 验证参数
if args.factor < 0:
print("错误:饱和度因子不能为负数")
exit(1)
adjust_saturation(args.input_dir, args.output, args.factor, args.overwrite)
进阶版本使用方法
# 基本用法 python script.py input_images -o output_images -f 1.5 # 降低饱和度至50% python script.py input_images -f 0.5 # 制作黑白效果 python script.py input_images -f 0.0 # 覆盖已存在的文件 python script.py input_images -f 2.0 --overwrite
注意事项
- 脚本会保留原始文件,不会修改输入文件夹内的图片
- 支持的格式:JPG, PNG, BMP, TIFF, WebP
- 带透明通道的PNG图片会保留透明度
- 调整因子过大(如>3.0)可能会导致色彩失真
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播