Drucker und Bildschirme unterscheiden sich grundsätzlich in der Art ihrer Farbdarstellung. Während Bildschirme von einem schwarzen Schirm ausgehend durch aktivieren der Elektronenstrahlen rote, blaue und grüne Punkte zum Leuchten bringen, gehen Drucker von einem weißen Blatt Papier aus und legen die Farbe durch Mischung der Farben Gelb, Zyan und Magenta fest.
Die Farben Gelb, Zyan und Magenta des Drucks sind dabei so festgelegt, dass jede Farbe genau eine Komponente des RGB Farbmodells beeinflusst, Gelb läßt z.B. Rot und Grün durch, sperrt aber Blau und somit kann durch die Dosis an gelber Farbe auf dem Papier der verbleibende Blauanteil der Grafik bestimmt werden.
Farbe | Kathodenstrahlröhre (Bildschirm) | Drucker | Name | |
Rot | aktiviert roten Elektronenstrahl | deaktiviert Zyan | Cyan | |
Grün | aktiviert grünen Elektronenstrahl | deaktiviert Magenta | Magenta | |
Blau | aktiviert blauen Elektronenstrahl | deaktiviert Gelb | Yellow |
Während die roten, grünen und blauen Leuchtelemente von Bildschirmen den idealen R,G,B Farben sehr nahe kommen, sind die Druckfarben Zyan, Magenta und Gelb recht weit von den idealen Druckfarben entfernt. So ergibt die 100%-Mischung von Zyan, Magenta, Gelb auch nicht Schwarz, sondern nur Dunkelbraun. Daher verwenden fast alle Drucker Schwarz als zusätzliche Farbe beim Vierfarbdruck.
Die Umrechnung zwischen RGB und CMYK-Farbraum ist nicht trivial und verlustbehaftet. Nicht jede auf einem RGB-Bildschirm darstellbare Farbe kann auch auf einem CMYK-Drucker gedruckt werden. für eine exakte Umrechnung müssen die Farbwerte der mit dem konkreten Druckermodell und Papier erreichbaren Farben berücksichtigt werden, d.h. die Umrechnung ist druckerabhängig.
Hochwertige Bildbearbeitungsprogramme wie Adobe Photoshop erlauben es, Zeichnungen sofort im CMYK-Format anzulegen, so dass der Designer die Grafik so sieht, wie sie später auch gedruckt werden kann. Dementsprechend werden die Grafiken dann als TIFF-Datei oder JPEG-Datei im CMYK-Farbformat gespeichert.
Windows 3.1, 95, 98 und NT 3.x und 4.0 enthalten aber leider keine Unterstützung zum Drucken von CMYK-Bildern. Alle Grafiken werden grundsätzlich im RGB-Format verarbeitet und es ist Aufgabe des Druckertreibers, die RGB-Daten für den Drucker in CMYK-Daten umzurechnen. Diese Vorgehensweise ist vernünftig, da der Druckertreiber die Druckerabhängigkeit der RGB->CMYK Umwandlung am besten berücksichtigen kann.
Jedoch ist somit keine exakte Kontrolle der Darstellung durch das Anwendungsprogramm möglich, dies ist insbesondere von Nachteil, wenn Grafikdaten bereits im CMYK-Format vorliegen und importiert werden sollen.
Normalerweise wandelt DaVinci (auch in der Standardversion) beim Import eine TIFF oder JPEG Datei im CMYK-Farbraum automatisch in eine RGB-DIB um. Da die Umwandlung ohne Kenntnis des Druckers durchgeführt wird, der für die Erstellung der Grafik vorausgesetzt wurde, wird mit Standardwerten konvertiert.
Import
In der Professional-Version können Sie beim Import das Flag IPDIBF_ALLOW_IMPORT_CMYK im Feld dwDIBFlags der DAVPARAMS-Struktur angeben und DaVinci erzeugt dann beim Importieren von TIFF, JPEG Dateien im CMYK-Format eine DIB im CMYK-Format.
Export
CMYK-DIBs können von DaVinci ohne Qualitätsverlust als TIFF oder BMP-Dateien gespeichert werden.
Beim Speichern in anderen Grafikformaten (JPEG, PNG...) wird die Grafik im RGB-Format gespeichert.
Bildschirmdarstellung
Die Funktion DIBCmyk2Rgb wandelt eine DIB im CMYK-Format in eine DIB im RGB-Format um, die dann an Windows API Funktionen wie z.B. StretchDIBits übergeben werden kann.
Die Funktion StretchDIBBlt erkennt automatisch eine übergebene DIB im CMYK-Format und erzeugt eine temporäre Kopie der DIB im RGB-Format und gibt diese dann auf den Bildschirm aus.
Die Imagine-Fensterklasse und die darauf aufgebauten VCL und OCX Elemente führen alle notwendigen Funktionen automatisch aus.
Druckunterstützung
Da Microsoft Windows Druckertreiber leider keine Funktionalität zum Drucken von CMYK-Bitmaps bieten, ist der Druck echter CMYK-Daten nur auf PostScript Druckern möglich.
Die Funktion StretchDIBBlt erkennt automatisch eine übergebene DIB im CMYK-Format und einen PostScript-Druckertreiber und sendet Postscript-code zum Druck der Daten im CMYK-Format an den Drucker.
Wenn der eingesetzte Druckertreiber kein PostScript-Treiber ist, wandelt StretchDIBBlt die Grafik ins RGB-Format und übergibt sie an den Druckertreiber.
Diese Funktionalität erlaubt den Druck sowohl von 16, als auch von 32-Bit Windows Programmen.
Auf diese Weise werden CMYK-Grafiken auch von PhotoShop gedruckt.
Bildbearbeitung
Da CMYK-Grafiken ohne Qualitätsverlust weder in eine DDB umgewandelt, noch mit DIB.DRV oder CreateDIBSection bearbeitet werden können, steht einzig das RWxxxx API zur Verfügung.
Die Funktionen RWGetPixelRgb16 und RWSetPixelRgb16 ermöglichen die Bearbeitung auf der Basis von RGB-Farbangaben, die automatisch vom/in den CMYK-Farbraum umgerechnet werden.
Die Funktionen RWGetPixelIndex und RWSetPixelIndex ermöglichen die Bearbeitung über direkte CMYK-Farbangaben in der Struktur pxCmykQuad der PIXELINDEXUNION.
Mit StretchDIB2DIBBlt kann ein Ausschnitt einer Quell-DIB (CMYK oder RGB) in eine Ziel-DIB (CMYK oder RGB) kopiert werden.
Erkennen einer CMYK-DIB
Die Funktion DIBIsCmyk erlaubt es festzustellen, ob eine DIB im CMYK-Format vorliegt.