本文目录导读:

- 方案一:使用 Photoshop 动作 + 批处理(最快,适合非程序员)
- 方案二:Python 脚本(使用 Pillow + OpenCV,适合程序员)
- 方案三:使用专门的软件(Lightroom / Luminar Neo)
- 终极建议(选择哪个?)
这是一个非常具体的需求,需要生成一个轻量级、且能批量处理图片添加镜头光晕(光斑) 的工具。
由于这是一个图像处理任务,最合适的实现方式通常是基于Python的脚本(利用OpenCV/PIL库)或者使用Photoshop的动作(Action)+ 批处理。
因为你是直接询问工具,我为你提供以下三种最有效的解决方案,从“免安装自动化”到“代码定制化”排序:
使用 Photoshop 动作 + 批处理(最快,适合非程序员)
这是最强大且效果最可控的方式,你需要准备一张“光晕素材”。
- 准备光晕素材:找一张黑底、带有光晕/光斑的 PNG 图片(
flare.png)。 - 录制动作:
- 打开一张示例图片。
- 窗口 > 动作 > 新建动作(命名为“添加光晕”)。
- 点击开始录制。
- 文件 > 置入嵌入对象,选择你的
flare.png。 - 调整光晕大小、位置、旋转(Ctrl+T)。
- 将图层的混合模式改为 “滤色” 或 “线性减淡(添加)”(这是关键,能去除黑底)。
- 调整不透明度。
- 点击停止录制。
- 批处理:
- 文件 > 自动 > 批处理。
- 源:选择你要批量处理的文件夹。
- 目标:选择输出文件夹。
- 动作:选择刚才录制的动作。
- 点击确定,软件会自动给每一张图加上同样的光晕。
Python 脚本(使用 Pillow + OpenCV,适合程序员)
如果你有大量图片需要处理,且希望随机生成光晕位置或效果,这个脚本很实用。
安装依赖
pip install pillow opencv-python numpy
Python 脚本代码
下面的脚本会读取指定文件夹中的图片,并叠加一个预制的光晕 PNG 图片,保存到输出文件夹。
import os
import glob
from PIL import Image
import random
def batch_apply_lens_flare(input_folder, output_folder, flare_image_path, opacity=0.8, random_position=True):
"""
批量为图片添加镜头光晕
:param input_folder: 输入图片文件夹
:param output_folder: 输出文件夹
:param flare_image_path: 光晕PNG图片路径(必须黑底)
:param opacity: 光晕透明度 (0-1)
:param random_position: 是否随机位置
"""
# 创建输出文件夹
os.makedirs(output_folder, exist_ok=True)
# 加载光晕素材
flare = Image.open(flare_image_path).convert("RGBA")
# 获取所有图片文件
image_files = glob.glob(os.path.join(input_folder, "*.[pj][np][g]")) # 支持jpg,png
image_files += glob.glob(os.path.join(input_folder, "*.jpeg"))
for img_path in image_files:
try:
# 打开背景图片
base_img = Image.open(img_path).convert("RGBA")
# 调整光晕大小(适配背景宽度,保持比例)
flare_resized = flare.copy()
new_width = int(base_img.width * 0.8) # 光晕宽度设为背景宽度的80%
new_height = int(new_width * flare.height / flare.width)
flare_resized = flare_resized.resize((new_width, new_height), Image.Resampling.LANCZOS)
# 设置透明度
if opacity < 1.0:
# 调整光晕的 alpha 通道
r, g, b, a = flare_resized.split()
a = a.point(lambda x: x * opacity)
flare_resized = Image.merge('RGBA', (r, g, b, a))
# 确定粘贴位置
if random_position:
x = random.randint(0, max(0, base_img.width - new_width))
y = random.randint(0, max(0, base_img.height - new_height))
else:
x = (base_img.width - new_width) // 2
y = (base_img.height - new_height) // 2
# 粘贴光晕(使用 alpha 通道遮罩,实现去除黑底的效果)
base_img.paste(flare_resized, (x, y), flare_resized)
# 保存(转为RGB去白边)
output_path = os.path.join(output_folder, os.path.basename(img_path))
base_img.convert("RGB").save(output_path, quality=95)
print(f"✓ 处理成功: {os.path.basename(img_path)}")
except Exception as e:
print(f"✗ 处理失败 {img_path}: {str(e)}")
if __name__ == "__main__":
# 使用方法
batch_apply_lens_flare(
input_folder="input_images/", # 放原图的文件夹
output_folder="output_images/", # 输出文件夹
flare_image_path="flare.png", # 你的光晕素材
opacity=0.9, # 不透明度
random_position=True # 随机位置
)
使用专门的软件(Lightroom / Luminar Neo)
如果你平时经常处理照片,不想写代码,也可以使用Lightroom Classic或Luminar Neo(Sky替换功能里自带光晕)。
- Lightroom:在修改照片 > 效果 > 添加“光晕”(颗粒旁边的滑块),但效果比较单一,无法实现复杂的多边形光斑。
- Luminar Neo:在“创意”工具里有一个“太阳光线”和“辉光”,可以很自然地模拟镜头光晕,且支持批量同步设置。
终极建议(选择哪个?)
- 如果你有 Photoshop:采用 方案一,效果最好,且光晕位置、大小、颜色可以精确控制。
- 如果你有大量图片(500+),且需要随机性:采用 方案二,写一个Python脚本,运行后自动处理,无需人工干预。
- 如果你只是偶尔用一下:可以使用手机App(如 PicsArt 或 Snapseed)的“镜头光晕”功能,手动加点效果。
你需要我帮你生成一个包含特定形状光斑的 PNG 素材图片吗?(我可以为你生成描述,或者把上面的代码修改成自动生成光晕而不是叠加素材)。
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。