Shell-Script

如何使用 imagemagick 旋轉目錄中的所有圖像?

  • January 11, 2019

我想旋轉目錄中與模式匹配的所有圖像。

到目前為止,我有:

for file in `ls /tmp/p/DSC*.JPG`; do
 convert $file -rotate 90 file+'_rotated'.JPG
done

但這沒有輸出?

您的程式碼存在很多問題。首先,您正在解析 ls 這是一個Bad Idea。正如您所指出的那樣,您還需要引用變數,$file並且還應該引用它,這樣它就不會在空格上中斷。您正在聲明num,但從未使用過。更安全的方法是:

find /tmp/p/ -name "DSC*.JPG" | while IFS= read -r file; do
 convert "$file" -rotate 90 "$file"_rotated.JPG
done

如果您的文件包含換行符,這仍然會有問題,但如果您的路徑包含空格,至少不會中斷。

如果文件都在同一個目錄中,可以使用 globbing 進一步簡化。您還可以使用參數擴展來創建foo_rotated.JPG1,而不是foo.JPG_rotated.JPG

for file in /tmp/p/DSC*.JPG; do
 convert "$file" -rotate 90 "${file%.JPG}"_rotated.JPG
done

mogrify -rotate 90 *.jpg使用imagemagick 旋轉所有圖像的更好的 One-Liner

mogrify -rotate 90 /tmp/p/DSC*.JPG實際上會在目錄中 旋轉所有.JPG開頭DSC``p

Mogrify(imagemagick 的一部分)不同於Convert它修改原始文件 http://www.imagemagick.org/script/mogrify.php

引用自:https://unix.stackexchange.com/questions/92871