2017-02-01 2 views
0

Клиенты загружают файлы изображений, обычно логотипы, на веб-сайт, и я хотел бы иметь возможность определять, какие цвета содержат изображения. У меня есть прекрасное представление о растровых изображениях, поскольку сглаживание вводит так много вариаций каждого цвета, но для векторных изображений (eps, svg, ai, чтобы упомянуть несколько, которые могут произойти). Я хочу верить, что это должно быть выполнимо.Подсчет и идентификация цветов в векторном изображении с использованием ImageMagick

Идеальное решение позволило бы мне составить список цветов, которые пользователь может проверить; «Ваше изображение содержит 3 цвета: 111c, 222c и 333c, эти цвета вы хотели бы использовать для печати?»

Я использую Magick.net и C#. Я могу читать файлы в экземплярах «MagickImage», но я теряюсь в том, как приступить к идентификации цветов.

ответ

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

+0

Большое спасибо за это, я определенно попробовать этот метод для растровых изображений. Но для векторных изображений я бы надеялся, что есть способ добраться до цветов без необходимости растрирования/уменьшения. Идеально подходит для цветов по их именам, таким как имена цветов PMS, если это то, что было использовано при создании файла. – Culme

+0

Прохладный, я надеялся, что это может быть полезно, даже если это не было 100% того, что вы просили. –