我正在编写一个脚本,将我在Linux机器上的背景更改为一组包含纯色的图像中的随机图像。我想要做的是扩展这个脚本,以相应地主题某些应用程序(主要是终端应用程序),至少改变文本颜色,可能从黑暗背景切换到浅背景等。我想知道我有什么选择获取图像中颜色的十六进制代码。我能用bash做点什么吗?我是否需要用更健壮的语言编写程序并将十六进制代码作为输出?是否有更好的方法完全这样做?到目前为止,我的搜索有点不确定。
我强烈建议使用ImageMagick来完成这项任务。 documentation提到了如何从图像中提取数据。
从“提取平均颜色”:
通过使用“-scale”将图像缩小为单个像素,可以非常快速地找到图像的平均颜色。这里例如是内置“rose:”图像的平均颜色。我使用FX Escape格式输出颜色,它返回一个颜色字符串,可以直接使用IM而无需更改。
user@laptop:~$ convert rose: -scale 1x1\! -format '%[pixel:s]\n' info:-
将输出:
srgb(146,89,80)
在您的情况下,将rose:
替换为您的图像文件,例如foo.png
。
如果您想直接以十六进制表示法输出,请使用:
convert rose: -scale 1x1\! -format '%[pixel:s]\n' info:- | awk -F '[(,)]' '{printf("#%x%x%x\n",$2,$3,$4)}'