2016-06-20 3 views
0

私は多くの高解像度画像(jpegjpgpng)を含むフォルダを持っています。すべての画像を25001440640の幅を持つjpegの画像に変換し、outputというフォルダに配置します。ImageMagick:画像を幅の異なる複数の画像に変換しますか?

Iは、画像ファイル名(すなわち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

Cool!ありがとう! 'shopt -s nullglob'と' ext = $ {f ## *。} 'について説明できますか? – allegutta

+0

確かに、申し訳ありません!私は私の答えを更新します... –

+0

ありがとう!素晴らしい答え! :) – allegutta

関連する問題