本文目录导读:

- 方法1:使用 ImageMagick(推荐)
- 方法2:使用 Python + Pillow
- 方法3:使用 Python + OpenCV
- 方法4:使用 Photoshop 批处理
- 方法5:使用在线工具(小图片)
- 批量处理脚本(高级版)
- 使用建议
方法1:使用 ImageMagick(推荐)
ImageMagick 是最强大的命令行图像处理工具。
安装
# macOS brew install imagemagick # Ubuntu/Debian sudo apt-get install imagemagick # Windows choco install imagemagick
批量添加边框脚本
Windows (批处理):
@echo off
mkdir output
for %%i in (*.jpg *.png *.jpeg) do (
magick "%%i" -bordercolor black -border 10x10 "output\%%i"
echo 已处理: %%i
)
pause
Linux/macOS (bash):
#!/bin/bash
mkdir -p output
for img in *.jpg *.png *.jpeg; do
if [ -f "$img" ]; then
# 添加10像素黑色边框
convert "$img" -bordercolor black -border 10x10 "output/$img"
echo "已处理: $img"
fi
done
边框样式示例
# 白色边框 convert input.jpg -bordercolor white -border 15x15 output.jpg # 3像素红色边框 convert input.jpg -bordercolor "#FF0000" -border 3x3 output.jpg # 圆角边框 convert input.jpg -bordercolor black -border 10x10 -border 10x10 output.jpg # 阴影效果边框 convert input.jpg -bordercolor "#808080" -border 5x5 -bordercolor white -border 15x15 output.jpg
方法2:使用 Python + Pillow
from PIL import Image, ImageOps
import os
def add_border(input_path, output_path, border_size=10, border_color='black'):
img = Image.open(input_path)
img_with_border = ImageOps.expand(img, border=border_size, fill=border_color)
img_with_border.save(output_path)
def batch_add_border(input_dir, output_dir, border_size=10, border_color='black'):
if not os.path.exists(output_dir):
os.makedirs(output_dir)
supported_formats = ('.jpg', '.jpeg', '.png', '.bmp')
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:
add_border(input_path, output_path, border_size, border_color)
print(f"已处理: {filename}")
except Exception as e:
print(f"处理失败 {filename}: {e}")
# 使用示例
batch_add_border(
input_dir='./images',
output_dir='./images_with_border',
border_size=20,
border_color='#333333' # 深灰色
)
方法3:使用 Python + OpenCV
import cv2
import os
def add_border_opencv(input_path, output_path, border_size=10, border_color=(0,0,0)):
img = cv2.imread(input_path)
# OpenCV使用BGR颜色空间
border_color_bgr = border_color if len(border_color) == 3 else (255,255,255)
img_with_border = cv2.copyMakeBorder(
img,
border_size, border_size, border_size, border_size,
cv2.BORDER_CONSTANT,
value=border_color_bgr
)
cv2.imwrite(output_path, img_with_border)
def batch_process(input_dir, output_dir, border_size=10, border_color=(0,0,0)):
if not os.path.exists(output_dir):
os.makedirs(output_dir)
for filename in os.listdir(input_dir):
if filename.lower().endswith(('.jpg', '.jpeg', '.png')):
input_path = os.path.join(input_dir, filename)
output_path = os.path.join(output_dir, filename)
try:
add_border_opencv(input_path, output_path, border_size, border_color)
print(f"已处理: {filename}")
except Exception as e:
print(f"处理失败 {filename}: {e}")
# 使用示例
batch_process(
input_dir='./images',
output_dir='./bordered_images',
border_size=15,
border_color=(255, 255, 255) # 白色
)
方法4:使用 Photoshop 批处理
如果你有 Photoshop,可以创建动作来批量处理:
-
创建动作:
- 打开一张图片
- 窗口 > 动作,创建新动作
- 选择 > 全部
- 编辑 > 描边(设置边框参数)
- 停止录制
-
批处理:
- 文件 > 自动 > 批处理
- 选择刚创建的动作
- 选择源文件夹
- 选择目标文件夹
- 点击确定
方法5:使用在线工具(小图片)
对于小批量处理,可以使用:
批量处理脚本(高级版)
这是一个更完整的 Python 脚本,支持多种边框样式:
from PIL import Image, ImageOps, ImageFilter
import os
import argparse
class ImageBorderAdder:
def __init__(self, style='simple', border_size=10, border_color='black',
shadow=False, round_corners=0):
self.style = style
self.border_size = border_size
self.border_color = border_color
self.shadow = shadow
self.round_corners = round_corners
def add_border(self, img_path, output_path):
img = Image.open(img_path)
# 添加圆角
if self.round_corners > 0:
mask = Image.new('L', img.size, 0)
mask_draw = ImageDraw.Draw(mask)
mask_draw.rounded_rectangle(
[(0,0), img.size],
radius=self.round_corners,
fill=255
)
img.putalpha(mask)
# 添加边框
if self.style == 'double':
img = ImageOps.expand(img, border=self.border_size, fill=self.border_color)
img = ImageOps.expand(img, border=self.border_size//2, fill='white')
elif self.style == 'shadow':
img_with_border = ImageOps.expand(img, border=self.border_size, fill=self.border_color)
# 添加阴影效果
shadow = ImageOps.expand(img, border=self.border_size+5, fill='black')
shadow = shadow.filter(ImageFilter.GaussianBlur(5))
shadow.paste(img_with_border, (0,0), img_with_border)
img = shadow
else:
img = ImageOps.expand(img, border=self.border_size, fill=self.border_color)
img.save(output_path)
# 使用命令行参数
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='批量添加图片边框')
parser.add_argument('input_dir', help='输入文件夹路径')
parser.add_argument('output_dir', help='输出文件夹路径')
parser.add_argument('--size', type=int, default=10, help='边框大小(像素)')
parser.add_argument('--color', default='black', help='边框颜色')
parser.add_argument('--style', default='simple',
choices=['simple', 'double', 'shadow'],
help='边框样式')
parser.add_argument('--round', type=int, default=0, help='圆角半径(像素)')
args = parser.parse_args()
adder = ImageBorderAdder(
style=args.style,
border_size=args.size,
border_color=args.color,
round_corners=args.round
)
if not os.path.exists(args.output_dir):
os.makedirs(args.output_dir)
for filename in os.listdir(args.input_dir):
if filename.lower().endswith(('.jpg', '.jpeg', '.png', '.bmp', '.tiff')):
input_path = os.path.join(args.input_dir, filename)
output_path = os.path.join(args.output_dir, filename)
try:
adder.add_border(input_path, output_path)
print(f"✓ 已处理: {filename}")
except Exception as e:
print(f"✗ 处理失败 {filename}: {e}")
使用建议
- 小批量(<10张):使用 Photoshop 动作或在线工具
- 大批量简单边框:使用 ImageMagick 命令
- 需要复杂效果:使用 Python 脚本
- 跨平台需求:Python 方案最通用
选择最适合你需求的方法即可!