本文目录导读:

- 方法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 方案最通用
选择最适合你需求的方法即可!
版权声明: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直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播