GraphicsMagick 的彩色像素数
color pixel count with GraphicsMagick
我需要计算图像中不是背景颜色的像素。
我从 PHP 调用它(它来自 ImageMagick):
gm convert test.png -fill black +opaque "rgb(255,255,255)" -fill white -opaque "rgb(255,255,255)" -print "pixels = %[fx:w*h*mean]\n"
但是没有给出任何结果,什么都没有。
我尝试改用直方图:
gm convert test.png -define histogram:unique-colors=true -format %c histogram:info.txt
有效,但给出了每种颜色的值和更多细节,我只需要一个数字。
您遇到了一些问题。您似乎在尝试将 GraphicsMagick 与 ImageMagick 混合使用,但它们不是一回事。
首先,GraphicsMagick 没有 ImageMagick 拥有的 +opaque
运算符。
其次,它没有 ImageMagick 用于计算的 -fx
运算符。
我建议您转向更强大的 ImageMagick。然后它将如您所愿地工作:
# Create a test image
convert -size 200x200 xc:black xc:white xc:red +append image.png
# Count the white pixels
convert image.png -fill black +opaque "rgb(255,255,255)" -print "pixels = %[fx:w*h*mean]\n" nul:
pixels = 40000
如果你真的,真的必须用 GraphicsMagick 来做,我只能建议以下 - 这在很大程度上基于@GlennRanders-Pehrson 的回答 here:
gm convert image.png +matte -matte -transparent white -operator matte negate 1 result.png
gm identify -verbose result.png | grep -EA5 "Opacity:|Geometry:" | grep -E "Mean|Geometry"
Geometry: 600x200
Mean: 43690.00 (0.6667)
Mean: 43690.00 (0.6667)
你的答案是:
600 * 200 * (1 - 0.667)
我需要计算图像中不是背景颜色的像素。 我从 PHP 调用它(它来自 ImageMagick):
gm convert test.png -fill black +opaque "rgb(255,255,255)" -fill white -opaque "rgb(255,255,255)" -print "pixels = %[fx:w*h*mean]\n"
但是没有给出任何结果,什么都没有。 我尝试改用直方图:
gm convert test.png -define histogram:unique-colors=true -format %c histogram:info.txt
有效,但给出了每种颜色的值和更多细节,我只需要一个数字。
您遇到了一些问题。您似乎在尝试将 GraphicsMagick 与 ImageMagick 混合使用,但它们不是一回事。
首先,GraphicsMagick 没有 ImageMagick 拥有的 +opaque
运算符。
其次,它没有 ImageMagick 用于计算的 -fx
运算符。
我建议您转向更强大的 ImageMagick。然后它将如您所愿地工作:
# Create a test image
convert -size 200x200 xc:black xc:white xc:red +append image.png
# Count the white pixels
convert image.png -fill black +opaque "rgb(255,255,255)" -print "pixels = %[fx:w*h*mean]\n" nul:
pixels = 40000
如果你真的,真的必须用 GraphicsMagick 来做,我只能建议以下 - 这在很大程度上基于@GlennRanders-Pehrson 的回答 here:
gm convert image.png +matte -matte -transparent white -operator matte negate 1 result.png
gm identify -verbose result.png | grep -EA5 "Opacity:|Geometry:" | grep -E "Mean|Geometry"
Geometry: 600x200
Mean: 43690.00 (0.6667)
Mean: 43690.00 (0.6667)
你的答案是:
600 * 200 * (1 - 0.667)