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

參考來源:

2 則留言 :

  1. imagemagick有圖形界面 kim。裝上 kim 後,在Dolphin中選取大量圖檔後按右鍵,便可以進行批次操作。

    另外digikam也能作批次處理。

    回覆刪除
  2. 剛剛試用了一下kim真的挺棒的耶!右鍵就可以處理這些事,還比我想像的多更多,真讚!

    回覆刪除