1

識別コマンドを使用すると、画像に関する情報が得られ、次のようになります

my_image.png PNG 154x78 154x78+0+0 8 ビット DirectClass 946B 0.000u 0:00.000

画像サイズは154x78です

しかし、この値を変数に入れる方法がわかりません

w=154 #But I want this 154 to be somehow parsed...
h=78

解析用のこのスクリプトは、.png 拡張子だけでなく、あらゆる種類の画像で機能するはずです。

また、可能であれば、この行 154x78+0+0 の 0+0 が何であるかを知りたいです

ありがとう

4

2 に答える 2

7

ファイル名にスペースが含まれるか、拡張子があるかどうかがわからないため、これは正規表現を書くのが難しいケースです。formatスイッチを使用する方が簡単ですidentify

identify -format '%w' filename.jpg
3360
identify -format '%h' filename.jpg
1080

bash では、次のように記述します。

W=`identify -format '%w' filename.jpg`
H=`identify -format '%h' filename.jpg`

は画像+0+0オフセットであり、軸上および軸上で+0+0開始することを意味します。詳細については、imagemagick のマニュアルを参照してください。0x0y

マーク・セッチェル編集

前述の回答は完全に優れており、競合する回答を追加したくありませんでした。コメントするには大きすぎる明確化またはマイナーな改善です...

OPが使用しているbashため、次のように、画像を複数回開くことなく、幅と高さの両方を一度に取得できます。

read w h < <(identify -format "%w %h" filename.jpg)

色空間や一意の色の数など、他のものと一緒に:

read w h c u < <(identify -format "%w %h %[colorspace] %k" filename.jpg)
于 2012-02-09T09:31:16.900 に答える
0

複数の区切り文字 (スペースと x) で awk を使用すると動作するはずです

バッククォートが機能しない場合は、 w = $(.....) を試すことができます。

w = `awk -F" |x" '{print $3}'`
h = `awk -F" |x" '{print $4}'`

事前にファイルに保存して渡すか、 call を含めることにより、identify コマンドの出力を上記に合わせる必要があります。

于 2012-02-09T09:22:08.440 に答える