2012年10月1日 星期一

如何使用bash shell script來批次修改圖檔大小

如果有大量的圖片需要從較大解析度轉成較小的解析度時,用圖形管理軟體一張一張轉換是很費工費時的,如果使用shell script就可以一次批次處理了。

首先你要安裝imagemagick,安裝imagemagick之後會有一個convert的指令可以用來更改圖片的解析度。

#!/bin/bash
for i in *.JPG; do convert $i -resize 10% $(basename $i .JPG).jpg; done
你可以將這個script存檔成你喜歡的名字,
他會將你現在的所在的目錄中所有的JPG圖檔縮小到10%,
並且將副檔名存檔為小寫的jpg,這樣就不會將原本的圖檔給覆蓋掉了
以下是其他的範例程式

# 將.JPG圖檔,縮小到10%,並且覆蓋原始檔
#!/bin/bash
for i in *.JPG; do convert $i -resize 10% $(basename $i .JPG).JPG; done
---
# 將小寫的.jpg圖檔,縮小到10%,並存檔為大寫的.JPG圖檔
#!/bin/bash
for i in *.jpg; do convert $i -resize 10% $(basename $i .jpg ).JPG; done
---
# 將.JPG圖檔,縮小到10%,並在檔名中加上-s,並保留原始檔
#!/bin/bash
for i in *.JPG; do convert $i -resize 10% $(basename $i .JPG)-s.JPG; done
---
# 將.JPG圖檔,變更解析度為600x400,並覆蓋原始檔
#!/bin/bash
for i in *.JPG; do convert $i -resize 600x400 $(basename $i .JPG).JPG; done

參考來源: