TLDR: 使用 ImageMagick 在命令行批量处理图片,添加边框并覆盖原图。
sudo apt-get install imagemagickbrew install imagemagickconvert input.jpg -bordercolor white -border 10x10 output.jpgsetopt 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 |