我想循环浏览图像文件夹并输出到控制台有多少像素是#333212,有多少是#332211等。这可能在PHP中吗?我找到了一个package 操纵图像,但没有一个可以检测每个像素颜色的图像。 PHP库中是否存在这样的工具或函数?
编辑:没有必须使用PHP,我安装的软件包越少越好。
答案 0 :(得分:4)
您可以使用ImageMagick轻松完成此操作,就像这样。假设我们想要计算红色像素......
# First create a little test strip with black, white, red, green and blue parts
convert -size 50x50 xc:black xc:white xc:red xc:lime xc:blue +append out.png
现在将任何非红色转换为黑色,以便只剩下red
像素
convert out.png -fill black +opaque red n.png
现在通过克隆生成的图片并使克隆完全变黑(通过将所有内容设置为零)来计算红色像素,并运行比较来计算有多少像素不是黑色
convert n.png \
\( +clone -evaluate set 0 \) \
-metric AE -compare \
-format "%[distortion]" info:
2500
2500对我来说看起来像50px乘50px: - )
注意强>
AE
是绝对误差,即不同像素数的简单计数。 -format "%[distortion]" info:
部分导致ImageMagick将计数(%distortion
)输出为数字(info:
)而不是图像。
显然,您将red
替换为"#333212"
以解决您的问题。
您也可以在一次访问中完成所有这些操作,例如:
convert input.png \
-fill black +opaque red \
\( +clone -evaluate set 0 \) \
-metric AE -compare \
-format "%[distortion]" info: