C# 使用ImageMagick计算和识别矢量图像中的颜色
客户将图像文件(通常是徽标)上传到网站,我希望能够识别图像包含的颜色。 我有点放弃了位图图像,因为消除混叠引入了每种颜色的许多变化,但是对于矢量图像(eps、svg、ai,以及可能出现的一些),我想相信它应该是可行的 理想的解决方案将使我能够产生一个颜色列表,用户可以验证;“您的图像包含3种颜色:111c、222c和333c,这些颜色是您希望用于打印的颜色吗?”C# 使用ImageMagick计算和识别矢量图像中的颜色,c#,imagemagick,magick.net,C#,Imagemagick,Magick.net,客户将图像文件(通常是徽标)上传到网站,我希望能够识别图像包含的颜色。 我有点放弃了位图图像,因为消除混叠引入了每种颜色的许多变化,但是对于矢量图像(eps、svg、ai,以及可能出现的一些),我想相信它应该是可行的 理想的解决方案将使我能够产生一个颜色列表,用户可以验证;“您的图像包含3种颜色:111c、222c和333c,这些颜色是您希望用于打印的颜色吗?” 我正在使用Magick.net和C#。我能够将文件读入“MagickImage”实例,但我不知道如何继续识别颜色。假设您从这个图像开始
我正在使用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
假设您从这张图像开始,它由随机颜色组成,然后减少到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
非常感谢,我一定会用这种方法处理位图图像。但对于矢量图像,我希望有一种方法可以获得颜色,而无需光栅化/缩小。理想情况下,通过给定的名称获得颜色,如PMS颜色名称,如果创建文件时使用了该名称。很酷,我希望它可能有用,即使它不是100%符合您的要求。非常感谢您,我将明确尝试位图图像的此方法。但对于矢量图像,我希望有一种方法可以获得颜色,而无需光栅化/缩小。理想情况下,可以通过指定的名称获得颜色,例如PMS颜色名称(如果创建文件时使用的名称)。很酷,我希望它可能有用,即使它不是您要求的100%。