脚本如何批量调整图片阴影

wen 实用脚本 7

本文目录导读:

脚本如何批量调整图片阴影

  1. 方案一:调整图片的整体暗部(阴影)—— 使用 Python + Pillow
  2. 方案二:移除或替换图片的投影(白底图去阴影)—— 使用 Python + OpenCV
  3. 方案三:使用 Photoshop 动作批量处理(最专业、最灵活)
  4. 方案四:使用 ImageMagick(命令行专用,高速)
  5. 总结建议

这是一个比较具体的需求,调整“阴影”通常指的是调整图像的明暗对比暗部细节或者添加/移除投影

根据你想要的“批量调整”和具体的“阴影”含义,这里有几种不同的脚本方案供你参考。

调整图片的整体暗部(阴影)—— 使用 Python + Pillow

这是最常见的情况:你想要批量把图片的阴影部分(暗部)提亮,或者把暗部压得更暗,以改善对比度。

适用场景: 批量处理几百张曝光不足或对比度不佳的照片。

脚本 adjust_shadows.py

import os
from PIL import Image, ImageEnhance, ImageOps
def batch_adjust_shadows(input_folder, output_folder, brightness_factor=1.2, contrast_factor=1.0):
    """
    批量调整图片阴影(通过提升暗部亮度和平滑对比度)
    :param input_folder: 输入文件夹路径
    :param output_folder: 输出文件夹路径
    :param brightness_factor: 亮度因子,>1 变亮,<1 变暗
    :param contrast_factor: 对比度因子,>1 增强,<1 减弱
    """
    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', '.tiff')):
            img_path = os.path.join(input_folder, filename)
            img = Image.open(img_path)
            # 1. 调整对比度(这会影响阴影的深度)
            enhancer_contrast = ImageEnhance.Contrast(img)
            img = enhancer_contrast.enhance(contrast_factor)
            # 2. 调整亮度(整体提亮,暗部会变得更明显)
            enhancer_brightness = ImageEnhance.Brightness(img)
            img = enhancer_brightness.enhance(brightness_factor)
            # 保存
            output_path = os.path.join(output_folder, filename)
            img.save(output_path)
            print(f"已处理: {filename}")
if __name__ == "__main__":
    # 请修改为你的文件夹路径
    input_folder = "C:/原始图片/"
    output_folder = "C:/处理后的图片/"
    # 推荐参数:亮度1.15,对比度0.9(提亮暗部同时不丢失细节)
    batch_adjust_shadows(input_folder, output_folder, brightness_factor=1.15, contrast_factor=0.9)

注意: 简单的亮度/对比度调整无法区分“阴影区域”和“高光区域”,如果需要仅调整阴影区域,建议使用 Photoshop 动作Lightroom,如果需要用 Python 实现,可以使用 OpenCV 结合 HSV 或 L 通道进行局部调整,但脚本会复杂很多。


移除或替换图片的投影(白底图去阴影)—— 使用 Python + OpenCV

如果你有一批 产品图,背景是白色但带有物体的投影(灰色区域),你想批量去掉它,或者替换成干净的背景,请用这个脚本。

适用场景: 电商产品图片,物体在白色背景上但有灰色阴影。

脚本 remove_shadow.py

import cv2
import numpy as np
import os
def batch_remove_shadow(input_folder, output_folder):
    """
    批量去除图片中的阴影(针对白底图)
    """
    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')):
            filepath = os.path.join(input_folder, filename)
            img = cv2.imread(filepath)
            # 1. 转换为灰度图
            gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
            # 2. 使用高斯模糊找到背景的亮度层级
            blurred = cv2.GaussianBlur(gray, (21, 21), 0)
            # 3. 计算差值(原图 - 模糊背景)
            diff = blurred - gray
            # 4. 找到阴影区域(差值大于阈值的部分)
            # 注意:如果阴影是偏暗的,diff 会是正数
            _, shadow_mask = cv2.threshold(diff, 10, 255, cv2.THRESH_BINARY)
            # 5. 对阴影区域进行修复(用周围的颜色填充)
            # 这里使用 Inpaint 算法
            result = cv2.inpaint(img, shadow_mask, 3, cv2.INPAINT_TELEA)
            # 6. 保存结果
            output_path = os.path.join(output_folder, filename)
            cv2.imwrite(output_path, result)
            print(f"已处理: {filename}")
if __name__ == "__main__":
    batch_remove_shadow("C:/原始图片/", "C:/处理后/")

注意: 这个脚本对纯白背景 + 单一暗影效果最好,如果背景复杂或阴影颜色很淡,效果可能不理想。


使用 Photoshop 动作批量处理(最专业、最灵活)

如果你会使用 Photoshop,这是调整“阴影/高光”最强大的方法,它允许你只调整阴影区域而不影响高光。

步骤:

  1. 打开一张样图。
  2. 录制动作 (Window -> Actions -> Create New Action)。
  3. 执行调整: 点击 Image -> Adjustments -> Shadow/Highlight...
    • 调整 “Shadows” 的 Amount (数量)、Tonal Width (色调宽度) 和 Radius (半径)。
    • 点确定。
  4. 保存图片:Ctrl+S (覆盖原图) 或 Shift+Ctrl+S (另存为新的文件夹)。
  5. 停止录制。
  6. 批量处理: File -> Automate -> Batch...
    • Source: 选择你的原始图片文件夹。
    • Destination: 选择输出文件夹。
    • 选择你刚才录制的 Action。
    • 点击 OK。

优点: 可以精确控制只调整阴影而不影响高光,且支持 PSD、TIFF 等复杂格式。


使用 ImageMagick(命令行专用,高速)

如果你是技术人员,且处理大量图片,ImageMagick 的命令行非常高效,以下命令可以提亮暗部

# Windows (CMD)
magick mogrify -path C:\output\ -brightness-contrast 10x-5 "C:\input\*.jpg"
# Mac / Linux
mogrify -path output/ -brightness-contrast 10x-5 "input/*.jpg"
  • -brightness-contrast 10x-5:亮度增加10%,对比度降低5%(暗部被提亮)。
  • 如果想像 Photoshop 那样精确调整阴影,可以使用 -channel 或者 -level,但相对复杂。

总结建议

你的需求 推荐方案
只想提亮暗部,不影响亮部 Photoshop 动作 (方案三) 或 Lightroom 预设
处理几百张普通照片,整体调整 Python + Pillow (方案一)
去除白底图上的灰色投影 Python + OpenCV (方案二)
不写代码,用现成软件 Photoshop 动作FastStone Image Viewer (批量加亮)
Linux/服务器大批量处理 ImageMagick (方案四)

建议先备份原始图片! 任何批量处理都有风险,先用几张图片测试效果。

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