我获取图像的最现有颜色,并使用“直方图”功能显示它,如
convert image.jpg -scale 100x100 -gravity \
center -crop 50% -dither None -remap color_map.gif \
-format %c histogram:info:
22: ( 0, 0, 0) #000000 black
881: (119,133,142) #77858E rgb(119,133,142)
268: (186, 84, 29) #BA541D rgb(186,84,29)
662: (212,212,212) #D4D4D4 grey83
20: (244,203, 98) #F4CB62 rgb(244,203,98)
647: (255,255,255) #FFFFFF white
我现在能用这个输出工作吗?我想保存我的数据库中最现有的颜色,但我不知道如何现在只获得数字881的颜色。 任何人都可以帮助我吗?
答案 0 :(得分:3)
如果你想纯粹从shell(假设类似Bash的Unix环境)这样做,那么这样的东西会起作用:
convert image.jpg -scale 100x100 -gravity center \
-crop 50% -dither None -remap color_map.gif \
-format %c histogram:info: | sort | tail -n1 | \
sed -e 's/.*\(#[0-9A-F]\+\).*/\1/'
从ImageMagick获取输出,对其进行排序,使最大颜色计数位于底部,仅取该行,然后从行中提取颜色十六进制。如果您的目标是获取十进制rgb值而不是十六进制,则可以调整sed正则表达式。
因此,对于您的示例图像,输出应该只是:
#77858E