2

多くのJPEGファイルのピクセル数をテキストファイルに書き込むための小さなワンライナーがターミナルにあります:

find . -name *.jpg -exec convert {} -format "%[fx:w*h]" info: \; > sizes.txt

実際にはそうですが、一部の数値は次のように科学表記になっています。

949200
960000
1.098e+06
1.038e+06
1.1664e+06
1.0824e+06
831600

次の行のように、コマンドを 10 進表記で出力する最も堅牢でエレガントな方法は何ですか?

949200
960000
109806
103806
1166406
1082406
831600

ImageMagick fx部分内でこれを行うか、変換のために出力を別のコマンドにパイプするかどうか疑問に思っていました。ありがとう!

4

3 に答える 3

3

http://www.imagemagick.org/script/escape.phpによる と、 %fx: ディレクティブを使用して他の数値形式を取得する明らかな方法はないため、コマンド ライン ソリューションが必要です。

w*h 科学表記法の出力を変換すると有効桁数が失われるため、w と h を別々に出力して乗算することをお勧めします。

bc を使用すると、次のようになります。

find . -name '*.jpg' -exec convert {} -format "%w*%h" info: \; |bc
于 2012-06-06T14:24:15.227 に答える
0

シェルコマンドへのこの変更は機能しているようです:

find . -name *.jpg -exec convert {} -format "%[fx:w*h]" info: \;  | xargs printf "%0.0f\n" > sizes.txt

必要に応じてフォーマット ディレクティブを調整しprintf "%0.0f\n"ます。

デモンストレーションのみを目的としています(これは、システムで見つかった find etc および .jpg ファイルと同じように機能します):

$ cat data.txt

949200
960000
1.098e+06
1.038e+06
1.1664e+06
1.0824e+06
831600

$ cat data.txt | xargs printf "%0.0f\n"

949200
960000
1098000
1038000
1166400
1082400
831600
于 2012-06-06T14:23:09.987 に答える