【问题标题】:Changing all images in a directory and its sub-directories using a single ImageMagick command?使用单个 ImageMagick 命令更改目录及其子目录中的所有图像?
【发布时间】:2020-11-21 16:21:52
【问题描述】:

我有一个包含多级子目录的目录,其中包含我想使用 ImageMagick 更改的 .jpg 文件。

要更改单个文件,我会 convert image0.jpg -resize x1000 -quality 82 small_image0.jpg

但是,除了每个目录中的所有 jpg 文件,我怎么能做同样的事情呢?

即:

  • -resize x1000 -quality 82 应用于所有目录中的每个jpg。
  • 每个输出文件都应与其输入文件位于同一目录中,但名称前应加上 small_

【问题讨论】:

    标签: bash image image-processing imagemagick imagemagick-convert


    【解决方案1】:

    使用findbash

    #!/usr/bin/env bash
    
    path=("$@")
    
    while IFS= read -ru9 -d '' pic; do
       dirname=$(dirname "$pic")
       basename=$(basename "$pic")
       printf 'Converting %s to %s\n' "$pic" "$dirname/small_$basename"
       convert "$pic" -resize x1000 -quality 82 "$dirname/small_$basename" || exit
    done 9< <(find "${path[@]}" -type f -name '*.jpg' -print0)
    

    假设您将脚本命名为myscript,以图片的路径作为参数执行它。

    ./myscript /path/to/pictures
    
    • 用正确的路径/目录更改/path/to/pictures,或者添加更多的路径/目录,用空格分隔,例如./myscript path1 path2 anotherpath morepath 而不仅仅是一个目录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-13
      • 1970-01-01
      • 1970-01-01
      • 2017-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多