我在js中使用Imagemagick,我得到像素的颜色,其坐标如下:
im.identify(['-format', '%[pixel:p{' + values.coordinate + '}]', values.file], function(err, color) {
console.log('color = ', color);
});
它有效,但有时我会得到一种颜色,如' grey60'或者' grey40'或类似的东西。 有没有办法要求Imagemagick以十六进制或rgb格式返回数据?或者有一种方法可以将此格式转换为十六进制或rgb?
答案 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