如何从脚本的纯色图像中获取十六进制颜色代码?

时间:2017-12-26 19:35:56

标签: linux colors hex imagemagick imagemagick-convert

我正在编写一个脚本,将我在Linux机器上的背景更改为一组包含纯色的图像中的随机图像。我想要做的是扩展这个脚本,以相应地主题某些应用程序(主要是终端应用程序),至少改变文本颜色,可能从黑暗背景切换到浅背景等。我想知道我有什么选择获取图像中颜色的十六进制代码。我能用bash做点什么吗?我是否需要用更健壮的语言编写程序并将十六进制代码作为输出?是否有更好的方法完全这样做?到目前为止,我的搜索有点不确定。

1 个答案:

答案 0 :(得分:1)

我强烈建议您使用ImageMagick执行此任务。 documentation提到了如何从图像中提取数据。

从"提取平均颜色":

  

使用" -scale"可以非常快速地找到图像的平均颜色。将图像缩小为单个像素。例如,内置玫瑰的平均颜色:"图片。我使用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)}'