2017-02-01 7 views
0

Kunden laden Bilddateien, typischerweise Logos, auf eine Website hoch, und ich möchte in der Lage sein, die Farben der Bilder zu identifizieren. Ich habe auf Bitmap-Bildern aufgegeben, da das Anti-Aliasing so viele Variationen jeder Farbe einführt, aber für Vektorbilder (eps, svg, ai, um nur ein paar zu nennen) könnte ich glauben, dass es machbar sein sollte.Zählen und Identifizieren von Farben in einem Vektorbild mit ImageMagick

Die ideale Lösung würde es mir ermöglichen, eine Liste von Farben zu erstellen, die der Benutzer überprüfen kann; "Ihr Bild enthält 3 Farben: 111c, 222c und 333c, sind das die Farben, die Sie zum Drucken verwenden möchten?"

Ich benutze Magick.net und C#. Ich bin in der Lage, die Dateien in "MagickImage" -Instanzen zu lesen, aber ich bin verloren, wie man bei der Identifizierung der Farben vorgeht.

Antwort

3

Angenommen, Sie mit diesem Bild beginnen, die aus zufälligen Farben hergestellt wird dann auf 18 Farben reduziert unten:

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

enter image description here

Jetzt können Sie eine Liste der Farben wie diese erhalten :

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

Beispielausgabe

# 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 

Und vielleicht würden Sie eine Swatch gerne zu:

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

enter image description here

+0

Vielen Dank dafür, ich werde auf jeden Fall versuchen, diese Methode für Bitmap-Bilder. Aber für Vektorbilder würde ich hoffen, dass es einen Weg gibt, zu den Farben zu kommen, ohne dass man rasterisieren/reduzieren muss. Im Idealfall, um zu den Farben mit ihren gegebenen Namen zu gelangen, wie zum Beispiel PMS-Farbnamen, wenn diese beim Erstellen der Datei verwendet wurden. – Culme

+0

Cool, ich hoffte, es könnte nützlich sein, auch wenn es nicht 100% war, was du verlangst. –

Verwandte Themen