Bash ImageMagick如何输出十六进制颜色而不是SRGB?
年,有人问如何用十六进制表示法计算图像的平均颜色。经过一些研究,我使用ImageMagick找到了一个可行的解决方案: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
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