2013-04-29 38 views
1

即时得到的图像的大多数现有的色彩和像ImageMagick:我如何处理直方图结果?

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 

何可我这个输出现在的工作“直方图”的Funktion显示呢?我想保存我的数据库中最现有的颜色,但我不知道如何获得现在只有数字881的颜色。 任何人都可以帮助我吗?

回答

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