2016-06-20 51 views
0

我有一個包含許多高分辨率圖像的文件夾(位於jpeg,jpg,png)。我想將每幅圖像轉換爲jpeg的圖像,寬度爲25001440640,並將它們放在名爲output的文件夾中。ImageMagick:將圖像轉換爲具有不同寬度的多個圖像?

我還希望將圖像的寬度加上作爲後綴的圖像文件名(即red-ball.jpg - >red-ball-640.jpegred-ball-1440.jpegred-ball-2500.jpeg)。

我該怎麼用ImageMagick做到這一點?

回答

1

你可以這樣說:

#!/bin/bash 

# Make output directory 
mkdir output 

shopt -s nullglob 
for f in *.jpg *.jpeg *.png; do 
    base=${f%.*} 
    ext=${f##*.} 
    echo Converting $f to output/$base -2500 -1440 -640 $ext 
    convert "$f" -resize 2500 -write "output/${base}-2500.${ext}" \ 
       -resize 1440 -write "output/${base}-1440.${ext}" \ 
       -resize 640 "output/${base}-640.${ext}" 
done 

樣本輸出

Converting test.jpg to output/test -2500 -1440 -640 jpg 
Converting z.jpg to output/z -2500 -1440 -640 jpg 
Converting z2.jpg to output/z2 -2500 -1440 -640 jpg 
Converting z3.jpg to output/z3 -2500 -1440 -640 jpg 
Converting z4.jpg to output/z4 -2500 -1440 -640 jpg 
Converting z1.jpeg to output/z1 -2500 -1440 -640 jpeg 
Converting a.png to output/a -2500 -1440 -640 png 
Converting black.png to output/black -2500 -1440 -640 png 
Converting c.png to output/c -2500 -1440 -640 png 
Converting d.png to output/d -2500 -1440 -640 png 
Converting f2.png to output/f2 -2500 -1440 -640 png 
Converting gantt.1.png to output/gantt.1 -2500 -1440 -640 png 
Converting globe.png to output/globe -2500 -1440 -640 png 
Converting h.png to output/h -2500 -1440 -640 png 
Converting output.png to output/output -2500 -1440 -640 png 
Converting result.png to output/result -2500 -1440 -640 png 
Converting result2.png to output/result2 -2500 -1440 -640 png 

shopt -s null glob確保如果沒有jpg文件或目錄png文件,該水珠(*.jpg*.png)展開爲空,而不是生成錯誤消息。更多信息here

ext=${f##*.}發現一段時間(句號)後最短的東西,這基本上是文件的擴展名。這叫做「bash參數替換」,我知道的最好的描述是here

+0

酷!謝謝!你能解釋一下'shopt -s nullglob'和'ext = $ {f ## *。''? – allegutta

+0

當然,對不起!我會更新我的答案... –

+0

謝謝!精湛的答案! :) – allegutta

相關問題