将grey60转换为rgb | ImageMagick的

时间:2017-08-17 12:38:30

标签: javascript colors hex imagemagick rgb

我在js中使用Imagemagick,我得到像素的颜色,其坐标如下:

im.identify(['-format', '%[pixel:p{' + values.coordinate + '}]', values.file], function(err, color) { 
  console.log('color = ', color);
});

它有效,但有时我会得到一种颜色,如' grey60'或者' grey40'或类似的东西。 有没有办法要求Imagemagick以十六进制或rgb格式返回数据?或者有一种方法可以将此格式转换为十六进制或rgb?

1 个答案:

答案 0 :(得分:1)

在IM 6.9.8-9和7.0.5.10中,为%[hex:]属性添加了类似于%[pixel:]的支持,但返回了十六进制值。所以这应该在命令行模式下工作。

convert xc:red -depth 8 -format "%[hex:u.p{0,0}]\n" info:
FF0000

或添加#符号:

convert xc:red -depth 8 -format "\#%[hex:u.p{0,0}]\n" info:
#FF0000

对于之前的IM版本(至少对于unix语法):

convert xc:red -depth 8 txt: | tail -n +2 | sed -n 's/^.*\(\#.*\) .*$/\1/p'
#FF0000 

因此,如果您想在坐标处使用十六进制颜色,请执行以下操作:

convert rose: -depth 8 -format "\#%[hex:u.p{20,20}]\n" info:
#A93B2A

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