Bash
批量調整高度*寬度問題
我正在嘗試使用此
bash
腳本調整目錄中所有圖像的大小:for i in *.jpg; do printf "Resize $i\n" convert "$i" -resize 336x336 "$i" done
但是當調整大小完成時,我得到
336x252
. 我該如何解決這個問題?
當 ImageMagick
convert
實用程序調整圖像大小時,它會保留圖像的縱橫比而不超出您指定的大小限制。如果您有一個 48x36 像素大的圖像(或 480x360 或具有相同 4:3 縱橫比的圖像)並且您要求
convert
將其大小調整為 336x336 像素,那麼 336x252 是它能夠製作的最大尺寸,同時仍然保持它的縱橫比。您可以通過使用作為選項的選項參數來強制
convert
忽略圖像的縱橫比。'336x336!'``-resize
這在 ImageMagick 命令行文件中有關Image Geometry的部分中進行了記錄。
在您的循環中,您
printf
以錯誤的方式使用。改為這樣做:
printf 'Resizing %s\n' "$i"
的第一個參數
printf
應該始終是靜態格式模板,其餘參數應該是用於填寫模板的數據。另請參閱:ShellCheck 問題程式碼 SC2059(“不要在 printf 格式字元串中使用變數”)。