Ich suche nach einem Algorithmus, um eine RGB-Farbe in CMYK zu konvertieren. Photoshop führt die folgende Umwandlung aus:
R = 220 G = 233 B = 174
C = 15 M = 0 Y = 40 K = 0
Die Konvertierung von RGB nach CMYK hängt von dem physischen Gerät / Prozess ab, der zum Ablegen der CMYK-Tinte verwendet wird. Diese werden in der Software als Farbprofile dargestellt. ICC und ICM Farbprofile von physischen Geräten bestimmen die resultierenden Farben.
Wenn Sie sich nicht für eine echte Repräsentation auf einem physischen Gerät interessieren, verwenden Sie die direkten Umrechnungsformeln in anderen Posts.
Wenn Sie sich jedoch mit diesem Aspekt befassen, müssen Sie entweder die Windows-Farbe verwenden Management-APIs oder etwas wie LittleCMS , um die Farbkonvertierungen für Sie vorzunehmen (da sie während der Konvertierung das richtige Farbprofil anwenden) .
Wenn Sie ein gutes Ergebnis wünschen, müssen Sie ein Farbprofil anwenden. In .NET können Sie das so machen (vorausgesetzt, die ursprünglichen CMYK-Komponenten liegen im Bereich zwischen 0 und 255):
%Vor%Beachten Sie, dass zwei verschiedene Color-Klassen aus zwei verschiedenen Namespaces verwendet werden. Und wahrscheinlich müssen Sie die PresentationCore-DLL als Referenz hinzufügen.
Das erforderliche Farbprofil kann im Downloadbereich von eci.org heruntergeladen werden. Es ist Teil einer größeren ZIP-Datei mit mehreren Profilen. Sie empfehlen ausdrücklich, das ISO Coated v2 300% (ECI) Profil zu verwenden.
Wenn Sie ein komplettes Bild von CMYK in RGB konvertieren müssen, gibt es dafür im selben Namensraum spezielle Klassen.
Ich denke, Photoshop verwendet profilbasierte Conversions. Schauen Sie sich an die Dokumentation zu den Farboptionen . Wenn dies der Fall ist, können Sie dieses Verhalten nicht mit einfachen formelbasierten Lösungen vergleichen.
Ich habe festgestellt, dass LCMS sehr praktisch, einfach und effizient für diese Art von Aufgabe ist. Ich weiß nicht, ob es eine .net-Bindung dafür gibt ...
Ich stimme den vorherigen Antworten zu, aber ich möchte Folgendes sagen:
%Vor%Es kann sein, wenn r = g = b = 0 ist.