Bash

批量調整高度*寬度問題

  • December 19, 2020

我正在嘗試使用此bash腳本調整目錄中所有圖像的大小:

for i in *.jpg; do
   printf "Resize $i\n"
   convert "$i" -resize 336x336 "$i"
done

但是當調整大小完成時,我得到336x252. 我該如何解決這個問題?

linux調整圖片大小問題

當 ImageMagickconvert實用程序調整圖像大小時,它會保留圖像的縱橫比而不超出您指定的大小限制。

如果您有一個 48x36 像素大的圖像(或 480x360 或具有相同 4:3 縱橫比的圖像)並且您要求convert將其大小調整為 336x336 像素,那麼 336x252 是它能夠製作的最大尺寸,同時仍然保持它的縱橫比。

您可以通過使用作為選項的選項參數來強制 convert忽略圖像的縱橫比。'336x336!'``-resize

這在 ImageMagick 命令行文件中有關Image Geometry的部分中進行了記錄。


在您的循環中,您printf以錯誤的方式使用。

改為這樣做: printf 'Resizing %s\n' "$i"

的第一個參數printf應該始終是靜態格式模板,其餘參數應該是用於填寫模板的數據。

另請參閱:ShellCheck 問題程式碼 SC2059(“不要在 printf 格式字元串中使用變數”)。

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