本文目录导读:

准备工作
首先安装依赖库:
pip install Pillow
脚本代码
import os
from PIL import Image, ImageEnhance, UnidentifiedImageError
def batch_adjust_sharpness(input_dir, output_dir, sharpness_factor,
input_formats=None, output_format=None,
quality=95, overwrite=False):
"""
批量调整图片锐度
参数:
input_dir: 输入目录路径
output_dir: 输出目录路径
sharpness_factor: 锐度调整因子 (1.0=原始, >1.0增加锐度, <1.0降低锐度)
input_formats: 输入格式列表,如 ['.jpg', '.png'],None表示所有支持格式
output_format: 输出格式,如 '.jpg',None表示保持原格式
quality: JPEG/WebP输出质量 (1-100)
overwrite: 是否覆盖已有文件
"""
# 创建输出目录
os.makedirs(output_dir, exist_ok=True)
# 支持的图片格式
supported_formats = {'.jpg', '.jpeg', '.png', '.bmp', '.tiff', '.webp', '.gif'}
# 统计信息
processed = 0
failed = 0
skipped = 0
# 遍历输入目录
for filename in os.listdir(input_dir):
file_path = os.path.join(input_dir, filename)
# 跳过非文件
if not os.path.isfile(file_path):
continue
# 检查文件扩展名
ext = os.path.splitext(filename)[1].lower()
# 检查是否为支持的格式
if ext not in supported_formats:
print(f"跳过不支持格式: {filename}")
skipped += 1
continue
# 按指定格式检查
if input_formats and ext not in [f.lower() if f.startswith('.') else f'.{f.lower()}' for f in input_formats]:
print(f"跳过未指定格式: {filename}")
skipped += 1
continue
# 确定输出格式
if output_format:
out_ext = output_format if output_format.startswith('.') else f'.{output_format}'
# 去除扩展名部分
base_name = os.path.splitext(filename)[0]
output_filename = f"{base_name}{out_ext}"
else:
output_filename = filename
output_path = os.path.join(output_dir, output_filename)
# 检查文件是否已存在
if os.path.exists(output_path) and not overwrite:
print(f"跳过已存在文件: {output_filename}")
skipped += 1
continue
try:
# 打开图片
with Image.open(file_path) as img:
# 转换为RGB模式(处理RGBA、P模式等)
if img.mode in ('RGBA', 'LA', 'P'):
img = img.convert('RGBA')
elif img.mode != 'RGB':
img = img.convert('RGB')
# 调整锐度
enhancer = ImageEnhance.Sharpness(img)
sharpened = enhancer.enhance(sharpness_factor)
# 保存图片
if output_format:
# 指定格式保存
sharpened.save(output_path, format=output_format.upper(), quality=quality)
else:
# 保持原格式保存
if ext in ('.jpg', '.jpeg'):
sharpened.save(output_path, 'JPEG', quality=quality)
elif ext == '.png':
sharpened.save(output_path, 'PNG')
elif ext == '.webp':
sharpened.save(output_path, 'WebP', quality=quality)
else:
sharpened.save(output_path)
processed += 1
print(f"✓ 已处理: {filename} -> {output_filename}")
except UnidentifiedImageError:
print(f"✗ 无法识别图片: {filename}")
failed += 1
except Exception as e:
print(f"✗ 处理失败 {filename}: {str(e)}")
failed += 1
# 打印统计信息
print("\n=== 处理完成 ===")
print(f"成功处理: {processed} 张")
print(f"处理失败: {failed} 张")
print(f"跳过: {skipped} 张")
# 使用示例
if __name__ == "__main__":
# 配置参数
input_directory = "./input_images" # 输入图片目录
output_directory = "./output_sharp" # 输出图片目录
# 锐度调整因子说明:
# 1.0 = 原始锐度
# 2.0 = 双倍锐度
# 0.5 = 半倍锐度(模糊)
sharpness = 2.0 # 增加锐度
# 指定输入格式(可选)
# image_formats = ['.jpg', '.png'] # 仅处理jpg和png
image_formats = None # 处理所有支持格式
# 输出格式(可选)
# output_img_format = '.png' # 全部转为PNG
output_img_format = None # 保持原格式
# 执行批量处理
batch_adjust_sharpness(
input_dir=input_directory,
output_dir=output_directory,
sharpness_factor=sharpness,
input_formats=image_formats,
output_format=output_img_format,
quality=95,
overwrite=False # 不覆盖已有文件
)
使用方法
-
创建目录结构:
project/ ├── input_images/ # 放入要处理的图片 └── script.py # 保存上面的脚本 -
修改配置参数:
input_directory = "./input_images" # 输入目录 output_directory = "./output_sharp" # 输出目录 sharpness = 2.0 # 锐度因子
-
运行脚本:
python batch_sharpness.py
sharpness_factor 参数说明
| 值 | 效果 | 适用场景 |
|---|---|---|
| 0 | 完全模糊 | 特殊效果 |
| 5 | 轻微模糊 | 柔化效果 |
| 0 | 原始锐度 | 保持不变 |
| 0 | 明显锐化 | 改善图像清晰度 |
| 0 | 强力锐化 | 非常模糊的图片 |
| 0+ | 极端锐化 | 特殊艺术效果 |
高级功能扩展
如果需要更精细的控制,可以添加以下功能:
def batch_advanced_sharpness(input_dir, output_dir, sharpness_value,
use_unsharp_mask=True, radius=2.0, percent=150):
"""
使用USM锐化进行更精细的控制
USM参数说明:
- radius: 锐化半径
- percent: 锐化强度百分比
"""
from PIL import ImageFilter
# ... 在循环中 ...
if use_unsharp_mask:
sharpened = img.filter(ImageFilter.UnsharpMask(
radius=radius,
percent=percent
))
else:
enhancer = ImageEnhance.Sharpness(img)
sharpened = enhancer.enhance(sharpness_value)
这个脚本简单实用,可以满足大多数批量调整锐度的需求。
版权声明: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直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播