シェルスクリプトで画像の解像度を取得したかったので、次のようにしてみました。sample.tifの画像解像度を取得してresolutionという変数に代入しています。
image="sample.tif"
convert $image buf.pgm
buf=(`convert -verbose buf.pgm buf.pgm`)
resolution=${buf[2]}
rm buf.pgm
imageMagickのconvertコマンドに-verboseオプションを入れると画像の情報を取得できたので、配列に格納して画像解像度だけを取得してみました。
convert $image buf.pgm
でわざわざPGMファイルに変換しているのは、verboseオプションによって取得できる画像情報がファイルフォーマットによって異なるからです。
PGMだと情報が比較的少なかったのでPGMを選びました。PGMの場合、2番目の配列に画像解像度情報が格納されます。
resolution="480x320"
というような感じになります。
別にこんなことしなくてもPGMに変換した時点でヘッダーから解像度を取得すればいい話ですがね。
ついでに幅と高さをわけるスクリプトも書いておきます。
resolution=${resolution//x/ }
buf=($resolution)
width=buf[0]
height=buf[1]
resolutionのxをスペースで置き換えて、buf配列に別々に格納して、それをwidthとheightに代入するだけです。
ただ、この方法だと一度ファイルを変換する必要があるので、画像解像度が極端に大きかったり、変換に重い処理が必要な場合は良くないですね。
フォーマット変換を行わなくても画像解像度くらい取得できると思うんですが、結局よくわかりませんでした。
どなたか、良い方法を知っていたら教えてください。