我想遍历图像文件夹并输出到控制台,以#333212像素,#332211像素等。在PHP中这可能吗?我发现了package可以操作图像,但是找不到可以检测每个像素颜色的图像。 PHP库中是否存在这样的工具或功能?
编辑:不必在PHP中,安装的软件包越少越好。
您可以使用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
<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9vYnVNUS5wbmcifQ==” alt =“在此处输入图像描述”>
现在将任何非红色转换为黑色,以便仅保留red
像素
convert out.png -fill black +opaque red n.png
<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9jUGlIUi5wbmcifQ==” alt =“在此处输入图像描述”>
现在通过克隆生成的图片并将克隆完全变为黑色(将所有内容设置为零,然后进行比较以计数有多少个非黑色像素来计数红色像素)>
convert n.png \ \( +clone -evaluate set 0 \) \ -metric AE -compare \ -format "%[distortion]" info: 2500
和2500在我看来像是50px x 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: