如何批量为图片添加边框并覆盖原图
2025-05-10
Abstract
如此简单的需求, 为什么不问问 GPT 呢
TLDR: 使用 ImageMagick 在命令行批量处理图片,添加边框并覆盖原图。
- ImageMagick: 一个强大的图像处理工具,支持多种格式和操作。
- 安装方法:
- Linux:
sudo apt-get install imagemagick
- macOS:
brew install imagemagick
- Windows: 从 ImageMagick 官方网站 下载安装包。
- Linux:
- 使用方法:
- 单张图片添加边框:
convert input.jpg -bordercolor white -border 10x10 output.jpg
- 批量处理并覆盖原图:
setopt nullglob for file in *.{jpg,png,gif,jpeg}; do convert "$file" -bordercolor white -border 10x10 "$file" done
- 单张图片添加边框:
- 安装方法:
- 注意事项:
- 备份原图:在执行覆盖操作前,请确保备份重要图片,以防覆盖后无法恢复。
- 文件格式:根据需要处理的图片格式,调整
*.{jpg,png,gif,jpeg}
中的扩展名。 - 边框颜色和宽度:可以根据需要修改
-bordercolor
和-border
的值。
以下脚本会遍历当前目录下所有 jpg, jpeg, png, webp 格式的图片, 将每张图片压缩到不超过 1MB (1024KB) , 并自动覆盖原文件. 压缩时会逐步降低图片质量, 最低降到 10. 请确保已安装 ImageMagick (magick 命令可用) , 并提前备份重要图片.
- 支持多种图片格式, 自动跳过不存在的文件.
- 采用迭代方式压缩, 优先保证图片质量.
- 压缩失败时会有提示, 最终会覆盖原图.
- 脚本结束后会自动清理临时文件.
#!/bin/bash
target_size_kb=1024
min_quality=10
formats=("jpg" "jpeg" "png" "webp")
# 遍历所有支持的图片格式
for ext in "${formats[@]}"; do
for file in *."$ext"; do
[ -e "$file" ] || continue # 跳过不存在的文件匹配
tmpfile="temp_compressed.${file##*.}"
quality=90
# 压缩迭代直到小于目标大小或降到最低质量
while [ $quality -ge $min_quality ]; do
magick "$file" -quality $quality "$tmpfile" 2>/dev/null
actual_size_kb=$(du -k "$tmpfile" | cut -f1)
if [ "$actual_size_kb" -le "$target_size_kb" ]; then
break
fi
quality=$((quality - 5))
done
# 检查是否压缩成功
if [ $quality -lt $min_quality ]; then
echo "⚠️ $file 无法压缩到 ${target_size_kb}KB 以下,保留最低质量 $quality"
fi
# 覆盖原文件
mv "$tmpfile" "$file"
echo "✅ $file 已压缩 (quality=$quality, size=${actual_size_kb}KB)"
done
done
# 清理残留的临时文件(如有)
[ -f "$tmpfile" ] && rm -f "$tmpfile"
关于本文
文章标题 | 如何批量为图片添加边框并覆盖原图 |
发布日期 | 2025-05-10 |
文章分类 | Tech |
相关标签 | #ImageMagick #CLI #Batch Processing |