本文目录导读:

Python + PIL/Pillow(最推荐)
import os
from PIL import Image, ImageOps
def batch_add_border(input_folder, output_folder, border_size=20, border_color='white'):
"""
批量给图片添加边框
参数:
input_folder: 输入文件夹路径
output_folder: 输出文件夹路径
border_size: 边框大小(像素)
border_color: 边框颜色(可以是颜色名称或RGB元组)
"""
# 创建输出文件夹(如果不存在)
if not os.path.exists(output_folder):
os.makedirs(output_folder)
# 支持的图片格式
supported_formats = ('.jpg', '.jpeg', '.png', '.bmp', '.gif', '.tiff')
# 遍历所有图片文件
for filename in os.listdir(input_folder):
if filename.lower().endswith(supported_formats):
try:
# 打开图片
img_path = os.path.join(input_folder, filename)
img = Image.open(img_path)
# 添加边框
img_with_border = ImageOps.expand(
img,
border=border_size,
fill=border_color
)
# 保存图片
output_path = os.path.join(output_folder, f'bordered_{filename}')
img_with_border.save(output_path)
print(f"✅ 已处理: {filename}")
except Exception as e:
print(f"❌ 处理 {filename} 时出错: {str(e)}")
# 使用示例
if __name__ == "__main__":
# 设置参数
input_folder = "input_images" # 输入图片文件夹
output_folder = "bordered_images" # 输出文件夹
# 添加白色边框
batch_add_border(
input_folder=input_folder,
output_folder=output_folder,
border_size=50, # 边框大小
border_color='white' # 边框颜色
)
# 或者使用RGB颜色
# border_color=(255, 0, 0) # 红色边框
带更多功能的版本
import os
from PIL import Image, ImageOps, ImageDraw
import argparse
class ImageBorderAdder:
def __init__(self):
self.supported_formats = ('.jpg', '.jpeg', '.png', '.bmp', '.gif', '.tiff')
def add_border(self, input_path, output_path, border_size=20,
border_color='white', border_style='solid'):
"""
添加边框的完整功能版本
border_style: 'solid', 'double', 'gradient'
"""
img = Image.open(input_path)
if border_style == 'solid':
# 实心边框
result = ImageOps.expand(img, border=border_size, fill=border_color)
elif border_style == 'double':
# 双线边框
result = ImageOps.expand(img, border=border_size, fill=border_color)
# 添加内边框
inner_border_size = border_size // 2
result = ImageOps.expand(result, border=inner_border_size,
fill='black' if border_color == 'white' else 'white')
elif border_style == 'gradient':
# 渐变边框(简化版)
result = self._add_gradient_border(img, border_size)
else:
result = ImageOps.expand(img, border=border_size, fill=border_color)
result.save(output_path)
return True
def _add_gradient_border(self, img, border_size):
"""创建渐变边框"""
w, h = img.size
new_w, new_h = w + 2*border_size, h + 2*border_size
# 创建渐变背景
gradient = Image.new('RGB', (new_w, new_h), 'white')
draw = ImageDraw.Draw(gradient)
# 简单渐变效果
for i in range(border_size):
color_value = int(255 * (1 - i/float(border_size)))
draw.rectangle(
[i, i, new_w-1-i, new_h-1-i],
outline=(color_value, color_value, color_value),
width=1
)
# 粘贴原图到中心
gradient.paste(img, (border_size, border_size))
return gradient
def batch_process(self, input_folder, output_folder, **kwargs):
"""批量处理所有图片"""
if not os.path.exists(output_folder):
os.makedirs(output_folder)
success_count = 0
error_count = 0
for filename in os.listdir(input_folder):
if filename.lower().endswith(self.supported_formats):
try:
input_path = os.path.join(input_folder, filename)
# 自定义输出文件名
name, ext = os.path.splitext(filename)
output_filename = f"{name}_bordered{ext}"
output_path = os.path.join(output_folder, output_filename)
self.add_border(input_path, output_path, **kwargs)
print(f"✅ {filename} → {output_filename}")
success_count += 1
except Exception as e:
print(f"❌ 错误处理 {filename}: {str(e)}")
error_count += 1
print(f"\n📊 处理完成: {success_count} 成功, {error_count} 失败")
# 使用示例
if __name__ == "__main__":
# 批量处理
adder = ImageBorderAdder()
# 添加实心边框
adder.batch_process(
input_folder="input_images",
output_folder="output_images",
border_size=30,
border_color='white',
border_style='solid' # 或 'double'/'gradient'
)
使用 ImageMagick 命令行工具
#!/bin/bash
# 保存为 add_border.sh
INPUT_DIR="input_images"
OUTPUT_DIR="output_images"
BORDER_SIZE=20
BORDER_COLOR="white"
# 创建输出目录
mkdir -p "$OUTPUT_DIR"
# 批量处理图片
for img in "$INPUT_DIR"/*.{jpg,jpeg,png,bmp,tiff,webp}; do
if [ -f "$img" ]; then
filename=$(basename "$img")
echo "处理: $filename"
# 使用ImageMagick添加边框
convert "$img" -bordercolor "$BORDER_COLOR" -border "${BORDER_SIZE}x${BORDER_SIZE}" \
"$OUTPUT_DIR/bordered_$filename"
echo "✅ 完成: $filename"
fi
done
echo "🎉 所有图片处理完成!"
使用建议
-
安装依赖:
pip install Pillow
-
调整参数:
border_size: 边框像素大小border_color: 颜色名称或RGB值border_style: 边框样式
-
运行方式:
- 将图片放入
input_images文件夹 - 运行脚本后结果保存在
output_images文件夹
- 将图片放入
-
自定义颜色:
border_color = (128, 64, 0) # RGB格式 border_color = 'red' # 颜色名称 border_color = '#FF0000' # 十六进制
选择最适合您需求的方案即可,Python脚本方式最灵活,命令行方式最简单快捷。