0

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

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

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

4

1 回答 1

4

假设您从这张图片开始,它由随机颜色组成,然后减少到只有 18 种颜色:

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

在此处输入图像描述

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

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

在此处输入图像描述

于 2017-02-01T09:29:46.667 回答