Bash ImageMagick如何输出十六进制颜色而不是SRGB?

Bash ImageMagick如何输出十六进制颜色而不是SRGB?,bash,imagemagick,Bash,Imagemagick,年,有人问如何用十六进制表示法计算图像的平均颜色。经过一些研究,我使用ImageMagick找到了一个可行的解决方案: user@laptop:~$ convert rose: -scale 1x1\! -format '%[pixel:s]\n' info:- 问题是,这打印的是srgb(146,89,80),而不是所需的925950 我试图通读的文档中确实提到了一个%[hex:“东西”,但是当用%[pixel:s]替换%[hex:s]时,我得到了以下错误: convert: unknown

年,有人问如何用十六进制表示法计算图像的平均颜色。经过一些研究,我使用ImageMagick找到了一个可行的解决方案:

user@laptop:~$ convert rose: -scale 1x1\! -format '%[pixel:s]\n' info:-
问题是,这打印的是
srgb(146,89,80)
,而不是所需的
925950

我试图通读的文档中确实提到了一个
%[hex:
“东西”,但是当用
%[pixel:s]
替换
%[hex:s]
时,我得到了以下错误:

convert: unknown image property "%[hex:s]" @ warning/property.c/InterpretImageProperties/3678.
我还尝试阅读了的文档,但我不知道如何将结果输出为十六进制代码而不是SRGB。

附加:

| awk -F '[(,)]' '{printf("#%x%x%x\n",$2,$3,$4)}'
输出:

#925950 #925950
您很可能因为ImageMagick版本太旧而出错。变化日志说:

2017-06-02 6.9.8-9 Cristy <quetzlzacatenango@image...>
Add support for 'hex:' property.
如果更早,那么

convert rose: -scale 1x1\! txt: | tail -n +2 | sed -n 's/^.*[#]\(.*\) .*$/\1/p'
925950 

convert rose: -scale 1x1\! txt: | tail -n +2 | sed -n 's/^.*\([#].*\) .*$/\1/p'
#925950 

在询问有关ImageMagick命令的问题时,最好提供您的ImageMagick版本和平台,因为语法可能会有所不同,可能会添加新功能或修复错误。

我希望纯粹在ImageMagick中找到答案,但如果awk起作用,则仅此而已。您还可以缩短它:
convert-rose:-scale 1x1\!txt:| grep-Eo'#[^]+'
@Cyrus
。美好的谢谢。稍微靠近一点,但没有十六进制数:
“#%[fx:round(r*256)]%[fx:round(g*256)]%[fx:round(b*256)]\n'
我想你需要做:
声明$(转换成rose:-scale 1x1\!-格式“rr=%[fx:round(255*r)]\ngg=%[fx:round(255*g)]\nbb=%[fx:round(255*b)]\n”信息:
convert rose: -scale 1x1\! txt: | tail -n +2 | sed -n 's/^.*[#]\(.*\) .*$/\1/p'
925950 

convert rose: -scale 1x1\! txt: | tail -n +2 | sed -n 's/^.*\([#].*\) .*$/\1/p'
#925950