Frage

Wie kann ich einen Graustufenwert (0-255) in einen RGB-Wert/eine RGB-Darstellung konvertieren? Es ist für die Verwendung in einem SVG -Bild, das nicht mit einer Graustufenunterstützung ausgestattet zu sein scheint, nur RGB ...

Hinweis: Dies ist kein RGB -> Graustufen, der bereits in einer anderen Frage beantwortet wird, z. B. Umwandlung von RGB in Graustufen/Intensität)

War es hilfreich?

Lösung

Der schnelle und schmutzige Ansatz besteht darin, die Graustufenintensität für jede Komponente von RGB zu wiederholen. Wenn Sie also Graustufen 120 haben, übersetzt dies RGB (120, 120, 120).

Dies ist schnell und schmutzig, da die effektive Luminanz, die Sie erhalten, von der tatsächlichen Luminanz der von Ihnen verwendeten R-, G- und B abhängt.

Andere Tipps

Wenn Sie den Graustufenwert in einer Variablen haben und einen neuen Wert im Formular 0x00RRGGBB erstellen möchten, dann ist dies eine schnelle Möglichkeit, dies zu tun:

int rgb = grey * 0x00010101;

oder gleichwertig in Ihrer gewählten Sprache.

Die Umwandlung eines Graustufens in RGB ist einfach. Verwenden Sie einfach r = g = b = grauer Wert. Die Grundidee ist, dass Farbe (wie auf einem Monitor in Bezug auf RGB betrachtet) ein additives System ist.

http://en.wikipedia.org/wiki/additive_color

So ergibt das Hinzufügen von Rot zu Grün Gelb. Fügen Sie dieser Mischung in gleichen Mengen etwas Blau hinzu, und Sie erhalten eine neutrale Farbe. Voll auf [rot, grün, blau] = [255 255 255] ergibt weiß. [0,0,0] ergibt Überwachung schwarz. Zwischenwerte, wenn r = g = b alle gleich sind, liefert nominell neutrale Farben des gegebenen Graupegels.

Ein kleines Problem hängt davon ab, wie Sie die Farbe sehen, es ist möglicherweise nicht perfekt neutral. Dies hängt davon ab, wie Ihr Monitor (oder Drucker) kalibriert wird. Es gibt interessante Tiefen der Farbwissenschaft, in die wir von diesem Punkt an eingehen könnten. Ich werde hier aufhören.

Grauer Maßstab bedeutet, dass alle Werte die gleiche Intensität haben. Stellen Sie alle Kanäle (in RGB) gleich dem grauen Wert ein, und Sie haben das ein RGB Schwarz -Weiß -Bild.

Wenn Sie nicht R, G und B auf denselben Wert setzen (der Graustufenwert) für jedes Pixel, bringen Sie einen korrekten Graustatten?

Sie können sich auch meine Lösung ansehen Schnellere Montage optimierte Möglichkeit, das RGB8 -Bild in das RGB32 -Bild umzuwandeln. Der graue Kanal wird einfach in allen anderen Kanälen wiederholt.

Ziel war es, die schnelle mögliche Lösung für die Konvertierung mithilfe von X86/SSE zu finden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top