ImageMagick是否可以使用';printf()';在选项中'-格式';?

ImageMagick是否可以使用';printf()';在选项中'-格式';?,imagemagick,Imagemagick,我正在使用“ImageMagick”命令identify以像素为单位计算图像面积: $ identify -format "%[fx:w*h]\n" example-small.jpg 699392 $ identify -format "%[fx:w*h]\n" example-large.jpg 1.80497e+07 在第二种情况下,输出为科学格式:1.80497e+07。 如果面积大于某个阈值(>=1000000),则会出现这种情况 该选项可与“ImageMagick”命令co

我正在使用“ImageMagick”命令
identify
以像素为单位计算图像面积:

$ identify -format "%[fx:w*h]\n"  example-small.jpg 
699392

$ identify -format "%[fx:w*h]\n"  example-large.jpg
1.80497e+07
在第二种情况下,输出为科学格式:
1.80497e+07
。 如果面积大于某个阈值(>=1000000),则会出现这种情况

该选项可与“ImageMagick”命令
convert
identify
mogrify
一起使用

是否可以使“%[fx:…]”格式选项本身使用特定的数字格式?

是否可以使“%[fx:…]”格式选项本身使用特定的数字格式

是和否。解析
%[fx:…]
格式时,ImageMagick将结果存储为
double
数据类型。此值将以
%.*g
格式传递给stdlib
vsnprintf()
方法。输出结果将产生“极端”数字的科学符号

对于“是”部分。由于您使用的是两个无符号整数(
w*h
),因此可以通过在ImageMagick中设置precision运算符来欺骗
vnsprintf()
的行为

identify -precision 32 -format "%[fx:w*h]\n"  example-large.jpg
然而,这不是一个真正的“修复”。它可能并不总是在系统之间工作,并且调整总体精度可能会产生不可预见的副作用

对于“不”部分。使用外部实用程序将结果格式化为您可以控制的格式可能更实用、更可靠

printf "%.f" $(identify -format "%[fx:w*h]" example-large.jpg)
诚然,这很不方便,但快速搜索“”提供了许多替代方法,因为这是一项常见任务