在整理博客配图、摄影照片或网页图片素材时,图片太大不仅拖慢加载速度,还会占用大量空间。
今天介绍一个超级实用的命令行工具:ImageMagick,可以快速、批量压缩或缩放图片


🧰 安装 ImageMagick(macOS)

1
brew install imagemagick

✂️ 操作示例

将图片质量到 50%

1
2
3
4
# MacOS
magick input.jpg -quality 50 output.jpg
# Ubantu的旧版命令是mogrify
mogrify 202505_front.JPEG -quality 30 202505_front.JPEG

将/Users/tianlejin/Desktop/2025-03里的所有图片都压缩到原来质量的50%

假设你有一堆 .JPEG 图片在目录 /Users/tianlejin/Desktop/test/,可以这样压缩并输出到 resized 子文件夹:

1
2
3
4
# MacOS
magick mogrify -quality 50 /Users/tianlejin/Desktop/2025-03/*.JPEG
# Ubantu
mogrify -quality 30 ~/myblog/blog-imgs/2025-05/*.JPEG

其他参数

  • -resize:按比例或指定尺寸缩放图片。
  • -strip:移除图片的元数据(如EXIF、GPS等)。
  • -sampling-factor:设置 JPEG 的色彩采样方式,控制压缩率和清晰度。
  • -auto-orient:根据照片的 EXIF 方向信息自动旋转图片。
  • -format:修改输出文件格式,如从 PNG 转为 JPG。

20250721补充

  • 当前工作流:
  1. 在手机上选好照片AirDrop到iPad
  2. ipad添加参数(注意添加焦段信息),AirDrop到Mac mini
  3. Mac mini重命名
    1
    2
    cd /Users/tianlejin/Downloads
    exiftool '-FileName<CreateDate' -d "%Y%m%d_%H%M%S%%-c.%%e" *.JPEG
  4. 压缩成webp
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    cd /Users/tianlejin/Downloads
    find . -type f \( -iname "*.jpg" -o -iname "*.jpeg" \) | while read -r file; do
    file_size=$(stat -f%z "$file")
    if [ "$file_size" -lt 10485760 ]; then
    quality=20
    else
    quality=10
    fi
    output_file="${file%.*}.webp"
    echo "转换中:$file -> $output_file (quality=$quality)"
    magick "$file" -quality "$quality" "$output_file"
    done

📚 官方文档

ImageMagick 官网:https://imagemagick.org/