【问题标题】:Convert ImageMagick’s output from scientific to decimal?将 ImageMagick 输出从科学转换为十进制?
【发布时间】:2012-06-06 13:55:06
【问题描述】:

我在终端中有一个小的单行代码,用于将许多 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

让命令以十进制表示法输出的最健壮/优雅的方式是什么,例如以下几行?

949200
960000
109806
103806
1166406
1082406
831600

我想知道您是否会在 ImageMagick fx 部分中执行此操作,或者将输出通过管道传输到另一个命令进行转换。谢谢!

【问题讨论】:

    标签: unix image-processing terminal imagemagick pipe


    【解决方案1】:

    根据http://www.imagemagick.org/script/escape.php 没有明显的方法可以使用 %fx 获得其他数字格式: 指令,因此需要命令行解决方案。

    转换 w*h 科学记数法输出会让你失去意义 位数,所以最好分别输出 w 和 h 并相乘。

    使用 bc 这将是:

    find . -name '*.jpg' -exec convert {} -format "%w*%h" info: \; |bc
    

    【讨论】:

    • 谢谢!我可以使用identify -format "%w %h" <filename>——但是如何在这个管道流中将 wh 相乘?有可能吗?
    • 我使用 bc 添加了一行
    【解决方案2】:

    要让 ImageMagick 打印大于一百万的数字而不将它们截断为指数(科学)符号,请使用 -precision n 选项。默认精度为 6。我建议将其设置为 12,这允许最多 1e+12 的数字(1 后跟 12 个零)。

    $ convert xc: -precision 12 -format '%[fx:1000*1000]\n' info:-
    1000000
    
    $ convert xc: -precision 6 -format '%[fx:1000*1000]\n' info:-
    1e+06
    

    【讨论】:

      【解决方案3】:

      对 shell 命令的这种修改似乎有效:

      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
      

      【讨论】:

      • 嗯...printf 命令给了我printf: 1.09056e+06: not completely converted 用于非十进制值
      • 哦,对不起!我在 OS X 10.6 中使用 /bin/bash
      猜你喜欢
      • 2021-03-30
      • 2012-10-15
      • 2016-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-27
      • 2012-11-29
      相关资源
      最近更新 更多