2011-01-16 29 views
9

Gibt es eine verfügbare Technologie in einem Browser (Client-Seite) in der Lage, sRGB-Farben in CMYK und umgekehrt mit einem bestimmten ICC-Farbprofil zu konvertieren?Gibt es eine clientseitige Technologie, die sRGB über ein ICC-Farbprofil in CMYK konvertieren kann?

Ich verwende derzeit ein verstecktes Java-Applet für die Konvertierungen (Java hat eine eingebaute Klasse dafür), aber ich versuche, eine Alternative zu finden, da Java-Applets langsam und veraltet sind.

SVG wäre ideal, wenn Browser ICC colors in SVG unterstützt, aber niemand tut. Flash oder Silverlight wäre auch gut, aber ich kann nichts Relevantes finden.

+0

Mein Vorschlag ist, dass Sie bei der Java-Lösung bleiben, da nichts falsch daran ist. Ich verstehe nicht, warum Sie es ersetzen möchten, oder warum Sie annehmen, dass Flash oder Silverlight besser wäre. – finnw

+0

Nur Leistung. Die gesamte Interaktion von JavaScript und Java-Applet ist ein wenig langsam, da es oft pro Sekunde getan wird, während Sie herumspielen, ändernde Farben. –

+0

Wenn der Engpass Nachrichten zwischen JavaScript und dem Applet passiert, vermute ich, dass das Ersetzen von Java durch Flash oder Silverlight keinen Unterschied macht. Wenn Sie jedoch [ColorSpace.fromCIEXYZ] (http://download.oracle.com/javase/6/docs/api/java/awt/color/ColorSpace.html#fromCIEXYZ (float [])) und verwandte Methoden verwenden auf einzelne Pixel - Nun, das * ist * langsam. Es gibt schnellere Implementierungen in Java (die möglicherweise immer noch schneller als JS oder Flash sind). – finnw

Antwort

4

Bin ich richtig in der Annahme, dass Sie das ICC-Profil des Anzeigegeräts verwenden möchten?

Ich bin ziemlich sicher, es gibt keine Möglichkeit, das ICC-Profil des Anzeigegeräts mit Javascript zu bestimmen. Im besten Fall ist es möglicherweise in einer Umgebung von Drittanbietern wie Flash möglich. Die Mathematik selbst wäre kein Problem.

Natürlich liegt dies wirklich in der Verantwortung des Webbrowsers. Firefox hat recht gute Unterstützung für das Farbmanagement. Wenn ich mich nicht irre, wird Microsoft das Farbmanagement in IE9 ansprechen.

a:

+0

Die Bereitstellung des Farbprofils für RGB über eine Datei ist auch in Ordnung. Ich verwende bereits eine Datei für CMYK. Ich brauche es nicht für vollständige Bilder, nur bestimmte Farben (für einen Farbwähler). Flash wäre in Ordnung, wenn man bedenkt, dass ich jetzt ein verstecktes Java-Applet verwende, was viel schlimmer ist. –

+0

@Lea: Das kann Dinge ändern. Können Sie mir ein Beispiel dafür geben, wie Sie das Applet tatsächlich verwenden? Der Code ist auch in Ordnung. –

+0

http://coloratum.com Es ist immer noch ein bisschen buggy und langsam, da ich es noch nicht veröffentlicht habe. Mit einem modernen Browser anzeigen. –

2

Nach Ihrer Frage zu lesen, kann ich nicht, wenn entscheiden. Sie versuchen, einen Softproof-Vorgang durchzuführen, oder

b. Sie bauen eine Farbauswahl Art der Anwendung, und Sie wollen Ihre Benutzer mit den Namen bestimmter Farben liefern (zB aus pantone oder NCS, etc. zu jagen), wenn Sie den sRGB-Wert Annäherungen anzuzeigen oder

c. etwas ganz anderes.

Was ist der CMYK-Raum, mit dem Sie beschäftigt sind? Wenn Sie die Option (a) - Softproofing - ausführen, können Sie wahrscheinlich Kurven zu den LUTs im CMYK-Profil anpassen und daraus eine "Verknüpfungs" -Transformation ermitteln, die Sie dann im Nicht-ICC-Modus ausführen können. JavaScript-Laufzeit, in der Sie arbeiten. Die meisten CMYK-Profile führen ihre Konvertierung mit LUTs durch, und viele verwenden ICC4 NamedColor2-Werte (die Sie vielleicht als Wert in 'ncl2' ICC-Tags kennen).

Wenn dies der Fall ist, kann ich Sie auf einige Ressourcen verweisen, wie dies zu tun ist - ich mache es selbst mit SciPy in der Python Django-Farbmanagement-Bildanalyse App-Plattform, an der ich arbeite.

Wenn Sie die Option (b) verwenden und Farbnamen benötigen, können Sie die benötigten Namen aus Ihrem CMYK-Profil extrahieren (höchstwahrscheinlich NamedColor2-Werte) und eine Nachschlagetabelle erstellen, die Sie anschließend serialisieren können JSON, damit Sie es in Ihre App laden können. Wenn Ihre App Kenntnisse über den Anzeigebereich haben muss, können Sie die App wahrscheinlich für ihre Anzeige "kalibrieren" - geben Sie ihnen einige Fragen, mit denen Sie den Weißpunkt-Offset berechnen können (und möglicherweise RGB XYZ) tristimulii) und dann vielleicht eine Quickie-Transformation (die so simpel sein kann wie eine chromatische Adaptions-Transformation, die ich errate), die Sie dann auf Farbwerte anwenden, die Sie "farblich verwalten" wollen, bevor Sie sie anzeigen.

die Transformationen ohne CMS-System zu tun, ist Bruce Lindbloom Mathe ein guter Anfang:

http://www.brucelindbloom.com/

wenn es c) ist bin ich sehr gespannt, was es ist.

ist das hilfreich? Ich kann Beispielcode, & c, erarbeiten und/oder zur Verfügung stellen, wenn Sie Ihre Frage ergänzen (ich arbeite in einer ähnlichen Problemdomäne, also konnten wir beide auf diesem gewinnen).

+0

Es ist für einen Farbwähler. Ich möchte, dass die CMYK <-> RGB-Konvertierung die gleiche ist, die die meisten Benutzer von Photoshop gewohnt sind, wenn sie ihr Standardfarbprofil verwenden (das auch näher an jeder gedruckten Realität ist als die naiven CMYK <-> RGB-Umwandlungsalgorithmen, die ohne Farbprofil erstellt werden alle). –

+0

Standard, wie in US Web Coated SWOP v2? Das ist mein CMYK-Standardarbeitsbereich; Ich denke, es war der Standard seit mindestens der ersten "Creative Suite" Release. Vielleicht war es schon vorher, aber ich habe vor dem Erscheinen der CS kein Farbmanagement verwendet, also weiß ich es nicht. – fish2000

+0

... Ich stimme zu, dass die meisten naiven CMYK-zu-RGB-Umwandlungsfunktionen, die Sie finden, schrecklich stumpfe Instrumente sind, aber die gedruckte Realität, für viele Leute, ist nicht unbedingt SWOP ... beim Drucken auf Inkjet-Papier, die meisten modernen Inkjets haben Gamuts, die sRGB viel näher sind als beispielsweise eine CMYK-Rollendruckmaschine. – fish2000