ImageMagick:如何使用+;一次执行转换时的信息?

ImageMagick:如何使用+;一次执行转换时的信息?,imagemagick,imagemagick-convert,Imagemagick,Imagemagick Convert,我使用如下方法分析图像的四个1px边框(边): convert IMAGE.jpg +repage -crop x1\!+0+0 -format "%[fx:standard_deviation]\n" info:- convert IMAGE.jpg +repage -crop x1\!+0+%[fx:h-1] -format "%[fx:standard_deviation]\n" info:- convert IMAGE.jpg +repage -crop 1\!x+0+0 -format

我使用如下方法分析图像的四个1px边框(边):

convert IMAGE.jpg +repage -crop x1\!+0+0 -format "%[fx:standard_deviation]\n" info:-
convert IMAGE.jpg +repage -crop x1\!+0+%[fx:h-1] -format "%[fx:standard_deviation]\n" info:-
convert IMAGE.jpg +repage -crop 1\!x+0+0 -format "%[fx:standard_deviation]\n" info:-
convert IMAGE.jpg +repage -crop 1\!x+%[fx:w-1]+0 -format "%[fx:standard_deviation]\n" info:-
magick start.png -write MPR:orig -delete 0 -format "%[fx:standard_deviation]\n" \
   \( MPR:orig -crop x1\!+0+0          -write info: -delete 0 \) \
   \( MPR:orig -crop x1\!+0+%[fx:h-1]  -write info: -delete 0 \) \
   \( MPR:orig -crop 1\!x+0+0          -write info: -delete 0 \) \
   \( MPR:orig -crop 1\!x+%[fx:w-1]+0  -write info: -delete 0 \) null:
这给了我所有边(顶部、底部、左侧、右侧)的标准偏差,因此如果它们中的大多数为0,我知道可能存在主背景/边框颜色

这很好,但也没有得到很好的优化,因为convert必须读取文件4次。如何让它在一次执行中打印所有这些内容

此外,有没有办法知道这些边的“平均”颜色?e、 g.如果图像为100x100,且上边框的100x1区域有50个像素黑色和50个像素白色,则该边缘的标准偏差旁边会出现“128.128.128255”


谢谢大家!

我有点忙,还没有检查这个,但是你可以将图像保存在MPR-Magick持久寄存器中,这是一个命名的内存块,并像这样调用它:

convert IMAGE.jpg +repage -crop x1\!+0+0 -format "%[fx:standard_deviation]\n" info:-
convert IMAGE.jpg +repage -crop x1\!+0+%[fx:h-1] -format "%[fx:standard_deviation]\n" info:-
convert IMAGE.jpg +repage -crop 1\!x+0+0 -format "%[fx:standard_deviation]\n" info:-
convert IMAGE.jpg +repage -crop 1\!x+%[fx:w-1]+0 -format "%[fx:standard_deviation]\n" info:-
magick start.png -write MPR:orig -delete 0 -format "%[fx:standard_deviation]\n" \
   \( MPR:orig -crop x1\!+0+0          -write info: -delete 0 \) \
   \( MPR:orig -crop x1\!+0+%[fx:h-1]  -write info: -delete 0 \) \
   \( MPR:orig -crop 1\!x+0+0          -write info: -delete 0 \) \
   \( MPR:orig -crop 1\!x+%[fx:w-1]+0  -write info: -delete 0 \) null:
这可能也适用于您的平均计算:

magick start.png -write MPR:orig -delete 0 \
   \( MPR:orig -crop x1\!+0+0          -format "%[fx:standard_deviation], " -write info: -resize 1x1\! -format "%[mean]\n" -write info: -delete 0 \) \
   \( MPR:orig -crop x1\!+0+%[fx:h-1]  -format "%[fx:standard_deviation], " -write info: -resize 1x1\! -format "%[mean]\n" -write info: -delete 0 \) \
   \( MPR:orig -crop 1\!x+0+0          -format "%[fx:standard_deviation], " -write info: -resize 1x1\! -format "%[mean]\n" -write info: -delete 0 \) \
   \( MPR:orig -crop 1\!x+%[fx:w-1]+0  -format "%[fx:standard_deviation], " -write info: -resize 1x1\! -format "%[mean]\n" -write info: -delete 0 \) null:
样本输出

0, 65535
0, 0
0.290373, 32767.5
0.290373, 32767.5
0, 1, 0,0
0, 0, 0,0
0.290373, 0.5, 0,0
0.290373, 0.5, 0,0

或者,最后回答:

magick start.png -write MPR:orig -delete 0 \
   \( MPR:orig -crop x1\!+0+0          -format "%[fx:standard_deviation], %[fx:mean.r], %[fx:mean.g],%[fx:mean.b]\n" -write info: -delete 0 \) \
   \( MPR:orig -crop x1\!+0+%[fx:h-1]  -format "%[fx:standard_deviation], %[fx:mean.r], %[fx:mean.g],%[fx:mean.b]\n" -write info: -delete 0 \) \
   \( MPR:orig -crop 1\!x+0+0          -format "%[fx:standard_deviation], %[fx:mean.r], %[fx:mean.g],%[fx:mean.b]\n" -write info: -delete 0 \) \
   \( MPR:orig -crop 1\!x+%[fx:w-1]+0  -format "%[fx:standard_deviation], %[fx:mean.r], %[fx:mean.g],%[fx:mean.b]\n" -write info: -delete 0 \) null:
样本输出

0, 65535
0, 0
0.290373, 32767.5
0.290373, 32767.5
0, 1, 0,0
0, 0, 0,0
0.290373, 0.5, 0,0
0.290373, 0.5, 0,0

我刚刚意识到我可以做“转换图像,jpg+repage-crop…-格式…图像,jpg+repage-crop…-格式…信息:-”在这种情况下,convert会多次读取图像文件吗?太棒了。非常感谢。我们可以使用%[fx:mean.r*255]在8位深度上获得它。我们也只能设置一次格式,在所有的括号之前。是的,我是在做晚饭和其他东西之间!很高兴你想出了如何把这一切放在一起!