客户将图像文件(通常是徽标)上传到网站,我希望能够识别图像包含哪些颜色。我有点放弃了位图图像,因为抗锯齿引入了每种颜色的许多变化,但是对于矢量图像(eps、svg、ai 等等可能发生的一些),我想相信它应该是可行的。
理想的解决方案将使我能够生成用户可以验证的颜色列表;“您的图像包含 3 种颜色:111c、222c 和 333c,这些颜色是您要用于打印的颜色吗?”
我正在使用 Magick.net 和 C#。我能够将文件读入“MagickImage”实例,但我不知道如何继续识别颜色。
客户将图像文件(通常是徽标)上传到网站,我希望能够识别图像包含哪些颜色。我有点放弃了位图图像,因为抗锯齿引入了每种颜色的许多变化,但是对于矢量图像(eps、svg、ai 等等可能发生的一些),我想相信它应该是可行的。
理想的解决方案将使我能够生成用户可以验证的颜色列表;“您的图像包含 3 种颜色:111c、222c 和 333c,这些颜色是您要用于打印的颜色吗?”
我正在使用 Magick.net 和 C#。我能够将文件读入“MagickImage”实例,但我不知道如何继续识别颜色。
假设您从这张图片开始,它由随机颜色组成,然后减少到只有 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