0

「ファイル」が次を返す写真のパッケージを処理しています:

$ file pic.jpg
pic.jpg: JPEG image data, JFIF standard 1.01, resolution (DPI), density 96x96, segment length 16, baseline, precision 8, 231x288, frames 3
$ file pic.jpg | cut -d',' -f8 | tail -c+2
231x288

そのため、トリミングに進む前に、組み込みの「読み取り」を使用して、2 つの変数のディメンションを選択しています。

しかし、何かが私を逃します。なぜこの構造が機能しないのですか...

$ ( file pic.jpg | cut -d',' -f8 | tail -c+2 | IFS=x read width height ; echo w:$width h:$height; )
w: h:

...このコンストラクトが機能している間は?

$ ( IFS=x read width height <<< $(file pic.jpg | cut -d',' -f8 | tail -c+2) ; echo w:$width h:$height; )
w:231 h:288

要約すると、そのような状況で組み込みの「読み取り」を備えたパイプラインを使用できないのはなぜですか?

4

3 に答える 3

1

ImageMagick から識別を使用して行うことができます

$ identify -format 'w=%[w]; h=%[h]' file.jpg

=andの使用に注意して;ください。

$ eval $(identify -format 'w=%[w]; h=%[h]' file.jpg)

シェルで変数を設定するには

于 2015-03-30T16:58:21.837 に答える
0

実際、あなたが を使用しているように、1 行だけを使用し、 s を使用せず、 s も s も使用bashしない、さらに簡単な方法があります。evalcuttail

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

高さ、幅、平均、標準偏差、色空間、一意の色の数など、すべて 1 回の呼び出しで多くのパラメーターを抽出したい場合、それは本当に真価を発揮します。

read w h m s c u < <(identify -format "%w %h %[mean] %[standard-deviation] %[colorspace] %k" file.jpg)
于 2015-03-31T11:02:04.867 に答える