使用ImageMagick计算和识别矢量图像中的颜色

时间:2017-02-01 08:18:51

标签: c# imagemagick magick.net

客户将图像文件(通常是徽标)上传到网站,我希望能够识别图像包含的颜色。 我有点放弃了位图图像,因为抗锯齿引入了每种颜色的很多变化,但是对于矢量图像(eps,svg,ai,可以提到一些),我想相信它应该是可行的。

理想的解决方案可以让我生成一个用户可以验证的颜色列表; “您的图像包含3种颜色:111c,222c和333c,这些是您想要用于打印的颜色吗?”

我正在使用Magick.net和C#。我能够将文件读入“MagickImage”实例,但我对如何继续识别颜色感到迷茫。

1 个答案:

答案 0 :(得分:3)

假设您从这张图片开始,该图片由随机颜色制成,然后缩小为仅18种颜色:

convert -size 256x256 xc:black +noise random -colors 18 image.png

enter image description here

现在,您可以获得这样的颜色列表:

convert image.png -unique-colors -depth 8 txt:

示例输出

# ImageMagick pixel enumeration: 18,1,65535,srgb
0,0: (7967,24415,7967)  #1F5F1F  srgb(31,95,31)
1,0: (24415,24672,8481)  #5F6021  srgb(95,96,33)
2,0: (16191,12336,16448)  #3F3040  srgb(63,48,64)
3,0: (8224,8224,24158)  #20205E  srgb(32,32,94)
4,0: (24672,24415,24415)  #605F5F  srgb(96,95,95)
5,0: (49344,16191,16448)  #C03F40  srgb(192,63,64)
6,0: (16448,46260,13878)  #40B436  srgb(64,180,54)
7,0: (8224,57311,24415)  #20DF5F  srgb(32,223,95)
8,0: (24415,57568,24415)  #5FE05F  srgb(95,224,95)
9,0: (49087,49344,16448)  #BFC040  srgb(191,192,64)
10,0: (13364,16448,46517)  #3440B5  srgb(52,64,181)
11,0: (24415,8224,57311)  #5F20DF  srgb(95,32,223)
12,0: (24415,24415,57054)  #5F5FDE  srgb(95,95,222)
13,0: (40863,24672,40863)  #9F609F  srgb(159,96,159)
14,0: (50372,15163,50115)  #C43BC3  srgb(196,59,195)
15,0: (16448,49087,49344)  #40BFC0  srgb(64,191,192)
16,0: (41120,40863,41120)  #A09FA0  srgb(160,159,160)
17,0: (50372,50372,50372)  #C4C4C4  grey77

也许你也想要一个色板:

convert image.png -unique-colors -scale 400x40 swatch.png

enter image description here