2017-03-27 5 views
1

Zeichnen CMYK Farbe von RGB

Hallo. Ich habe einen Bildschirm wie oben. Mit den Schiebereglern bekomme ich rot, grün, blau. Außerdem berechne ich Cyan, Magenta, Gelb und von Rot, Grün, Blau für CMYK. Meine Frage ist, dass es irgendeine Möglichkeit gibt, CMYK-Farbe in Java wie hellviolett auf dem Bild zu zeigen.

private void stateChanged() { 
     red= sliderRed.getValue(); 
     green= sliderGreen.getValue(); 
     blue= sliderBlue.getValue(); 
     txt_background.setBackground(new Color(red, green, blue)); 
} 
+0

Ihre Frage ist unklar. Alle Monitore sind RGB. Es gibt keine eindeutige Eins-zu-Eins-Zuordnung zu CMYK, da diese Zuordnung von vielen Faktoren wie der Renderpunktgröße, dem Tintenabsorptionsspektrum und einer ganzen Reihe weiterer Faktoren abhängt, die das Rendering ändern. Selbst dann kann es mehr als eine Möglichkeit geben, RGB auf CMYK abzubilden, und dann gibt es Überlegungen zu Farbraum. Es ist nicht einmal klar, was du machen willst. Wenn Sie mit _ "CMYK-Farbe in Java wie hellpurpur anzeigen" _ Sie meinen "zeigen, wie die CMYK-Farbe aussehen würde, aber auf dem Bildschirm", ist dies völlig unmöglich mit jeder Hoffnung auf Genauigkeit zu tun. –

+0

@JimGarrison aber meine Aufgabe ist die Farbraumkonvertierung von RGB nach CMYK und CMYK nach RGB. Implementieren Sie zusätzlich die Präsentation der benutzerdefinierten Farbe. –

+0

Im Wesentlichen ein Duplikat von http://stackoverflow.com/questions/4858131/rgb-to-cmyk-and-back-algorithm Die Antwort wäre, hin und her zu konvertieren, wie in der akzeptierten Antwort zu dieser verbundenen Frage getan (die steht auch in der Liste rechts unter "Related"). Beachten Sie jedoch den Kommentar von @JimGarrison und berücksichtigen Sie dies sorgfältig. – Aaron

Antwort

3

Es mir wie die Java-Farbklasse aussieht hat, einen Konstruktor ein Farbobjekt in cmyk

https://docs.oracle.com/javase/7/docs/api/java/awt/Color.html#Color(java.awt.color.ColorSpace,%20float[],%20float)

und

zur Herstellung

https://docs.oracle.com/javase/7/docs/api/java/awt/color/ColorSpace.html

So würden Sie am Ende mit etwas wie

Wo Alpha ist Form 0 zu 1, und cValue, mValue, yValue, kValue sind die entsprechenden Cmyk-Werte.

Das sollte ein neues CMYK-Farbobjekt erstellen, das überall dort verwendet werden kann, wo ein Farbobjekt verwendet werden kann.

+0

Erwarten Sie jedoch nicht, dass die gerenderte "CMYK" -Farbe auf dem Bildschirm so aussieht wie die gedruckte Farbe. CMYK ist in einem RGB-Display bedeutungslos und liegt bestenfalls nur in der Nähe der Echtfarbe. –

+0

@JimGarrison Sie haben recht, schließlich wird alles in RGB konvertiert, um es auf dem Bildschirm darzustellen. Es klang für mich so, als ob diese Aufgabe darin bestand, zwischen den beiden zu konvertieren, und er zog es meistens zurück auf den Bildschirm, um sicherzustellen, dass die Konvertierung korrekt war. –

+0

Ich bin mir sicher, dass Sie Recht haben, aber _ "es auf den Bildschirm zurückziehen, um sicherzustellen, dass die Konvertierung korrekt war" _ ist aufgrund der Mapping- und Gamut-Probleme sinnlos. Es kann auf dem Bildschirm "korrekt" aussehen, auf reflektierenden Medien jedoch sehr schlecht. –

Verwandte Themen