用ImageMagick获取颜色值

看了一部分ImageMagick官方范例,用convert命令的txt:转换可以把点阵图片转换成文本文件,其中包含了每一个像素的颜色信息。包括:

例子

例如这张ImageMagick自带的玫瑰:玫瑰 处理命令:

rosehead.sh
convert rose: txt:- | head 7

输出结果:

# ImageMagick pixel enumeration: 70,46,255,rgb
0,0: ( 48, 47, 45)  #302F2D  rgb(48,47,45)
1,0: ( 50, 48, 46)  #32302E  rgb(50,48,46)
2,0: ( 54, 50, 47)  #36322F  rgb(54,50,47)
3,0: ( 56, 51, 46)  #38332E  rgb(56,51,46)
4,0: ( 58, 51, 45)  #3A332D  rgb(58,51,45)
5,0: ( 57, 50, 45)  #39322D  rgb(57,50,45)

而要取某位置的颜色,则可以结合-crop操作来完成,处理命令:

getByPixel.sh
convert rose: -crop 1x1+12+18 txt:-

输出结果:

# ImageMagick pixel enumeration: 1,1,255,rgb
0,0: (135,127,196)  #877FC4  rgb(135,127,196)

这样的文本可以转换回图片。如果要刨去不需要的信息:

getColorByPixel.sh
convert rose: -crop 1x1+12+18 txt:- | egrep -o '#[A-Z0-9]+'

输出就是

#877FC4