Aus PDF extrahierte CMYK-JPEGs werden invertiert angezeigt


8

Ich muss mich mit CMYK-JPEGs befassen, die aus einer PDF-Quelle extrahiert wurden. Die PDFs wurden mit Photoshop erstellt.

Das Problem ist, dass Photoshop JPEG-CMYK-Daten in PDF / EPS mit "normalen" Werten speichert, während es in eigenständigen JPEGs invertierte Werte speichert. Wenn also die DCTDecode-Streams byteweise extrahiert und auf die Festplatte geschrieben werden, werden die resultierenden JPEG-Dateien invertiert angezeigt.

(Die eigentliche Extraktion erfolgt durch ein internes Dienstprogramm, das die Bytes einfach aus dem DCTDecode-Stream extrahiert und unverändert in eine Datei schreibt, die auf endet. .jpgEs handelt sich im Grunde genommen um ein binäres Kopieren und Einfügen. Die PDFs können erneut verwendet werden Prozess, sollte das erforderlich sein.)

Gibt es eine Möglichkeit, einen Marker in die extrahierte .jpgDatei zu setzen, damit Photoshop sie mit der richtigen Codierung öffnet , da die Bilder in ihrem JFIF-Format bleiben müssen ? Der Prozess muss verlustfrei sein (keine weitere Entropiecodierung erforderlich sein).

Die JPEGs enthalten den APP14Marker bereits und das Entfernen hat keine Auswirkung.

Unten ist ein Zitat aus den libjpegDokumenten:

"... es scheint, dass Adobe Photoshop invertierte Daten in CMYK-JPEG-Dateien schreibt: 0 steht für 100% Tintenabdeckung und nicht wie erwartet für 0% Tinte. ... Photoshop 3.0 [und neuer] ... schreibt nicht invertiertes YCCK in EPS / JPEG-Dateien ... (Die in reinen JPEG-Dateien verwendete Datenpolarität ändert sich jedoch nicht ...) "


2
Können Sie die Konvertierung der exportierten JPEGs nicht einfach in die reguläre CMYK-Codierung stapelweise automatisieren? Warum müssen Sie die extrahierten Dateien markieren - Sie sagen, dass alle PDFs in Photoshop erstellt wurden?
e100

Wie extrahieren Sie die JPEGs aus den PDFs? Haben Sie bereits einen Ordner mit vielen JPEGs, die alle konvertiert werden müssen? Es wäre gut, diese Informationen in Ihre ursprüngliche Frage aufzunehmen.
e100

Wenn Sie die JPEG-Daten programmgesteuert extrahieren, können Sie gleichzeitig auch die erforderliche Arithmetik für die Farbwerte automatisieren? Ich bin mir nicht sicher, wie einfach das ist. Ja, Sie haben Recht, ich habe mich wirklich gefragt, ob Sie die Kontrolle über den Extraktionsprozess hatten oder nur die Ausgabe handhaben mussten
e100

@unsigned: Wenn die Farbwerte als Floats gespeichert werden, kann es zu großen Fehlern kommen. Wenn sie jedoch als Ganzzahlen gespeichert werden, sollte das Invertieren nicht so problematisch sein. Ich habe das Gefühl, dass Sie einen Teil des Workflows in Ihrer Frage ausgelassen haben. Beachten Sie jedoch, dass CMYK nicht vom JPEG-Format unterstützt wird, sondern von JPG2000. Ich weiß nicht, ob dies einen Unterschied für Ihre Auswahl an Bibliotheken macht ...
Horatio

2
Ich beziehe mich auf den ursprünglichen JFIF-Standard, der 1 oder 3 Farben (24 Bit) unterstützt. Der Mangel an CMYK-Unterstützung wurde in einem späteren Standard behoben. Früher war es ein Problem, wenn Leute JPEGs aus CMYK-Quellen erstellen und versuchen, sie auf Websites zu verwenden. In Bezug auf den Workflow haben Sie dem Vorschlag von e100 widersprochen, die Stapelautomatisierung zu verwenden. Photoshop unterstützt dies. Wenn die Farben einfach invertiert werden, kann Photoshop einen Stapelprozess wie "Öffnen, Invertieren, Speichern unter" für eine beliebige Anzahl von Dateien ausführen.
Horatio

Antworten:


5

Hier in Adobe-Foren gibt es das gleiche Problem mit erfolgreichen Ergebnissen: http://forums.adobe.com/message/4271028

Vielleicht ist das APP14-Tag nicht korrekt? APP14-Tags bieten mehr als nur das Vorhandensein. Auf JPEG-Tags: http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/JPEG.html#Adobe

JPEG Adobe Tags

Das APP14-Segment "Adobe" speichert Bildcodierungsinformationen für DCT-Filter. Dieses Segment kann mit dem Extra-Tag "Adobe" als Block kopiert oder gelöscht werden. Beachten Sie jedoch, dass es beim Löschen aller Metadaten nicht standardmäßig gelöscht wird, da dies das Erscheinungsbild des Bildes beeinträchtigen kann.

╔════════╦══════════════════╦══════════╦════════════════════════════════════════════╗
║ Index2 ║     Tag Name     ║ Writable ║               Values / Notes               ║
╠════════╬══════════════════╬══════════╬════════════════════════════════════════════╣
║      0 ║ DCTEncodeVersion ║ N        ║                                            ║
║      1 ║ APP14Flags0      ║ N        ║ Bit 15 = Encoded with Blend=1 downsampling ║
║      2 ║ APP14Flags1      ║ N        ║                                            ║
║      3 ║ ColorTransform   ║ N        ║ 0 = Unknown (RGB or CMYK)                  ║
║        ║                  ║          ║ 1 = YCbCr                                  ║
║        ║                  ║          ║ 2 = YCCK                                   ║
╚════════╩══════════════════╩══════════╩════════════════════════════════════════════╝

Aber das könnte nicht helfen, ich erinnere mich an jemanden, der erklärt, dass diese privaten Marker nicht als Leitfaden für PDF-Reader gedacht sind, sondern dass geeignete Decodierungs-Arrays vorhanden sein sollten.

Die Magie scheint zu sein

/ Dekodiere 0 1 0 1 0 1 0 1

das würde die Farbzuordnung invertieren. (Ich denke, das ist ein Flag in libjpeg, etwas Ähnliches sollte in jedem ähnlichen Tool verfügbar sein.) Dekodierungsarrays sind in PDFs gemäß der PDF-Referenz hier üblich: http://partners.adobe.com/public/developer/en/pdf /PDFReference.pdf

Ich habe keine Ahnung, ob Sie diese Dekodierungsarrays in PDF-JPEGs hinzufügen können oder ob Sie dies zur Stream-Verarbeitung Ihres internen Tools hinzufügen müssen. Ich habe kein Beispiel-PDF, an dem ich arbeiten kann, daher kann ich keine weiteren Nachforschungen anstellen (außerdem ist die Referenz riesig - tl; dr - aber Sie müssen möglicherweise ..)


1
Dies hat mir geholfen, ein Photoshop CMYK JPEG in eine PDF-Datei einzubetten, um es korrekt anzuzeigen. Ich hatte das Bild XObject das Wörterbuch einstellen /DecodePunkt [1 0 1 0 1 0 1 0].
Brecht Machiels

Dies hat mir auch geholfen, und ich kann überprüfen, ob CMYK-JPEGs, die invertiert wurden, jetzt korrekt gerendert werden. RGB-Bilder brauchen das für mich nicht ... Ich habe jedoch eine Frage: Trifft dies auf ALLE CMYK-Bilder zu, nicht nur auf einige? Wird dies (immer) korrekt gedruckt? (Also nicht nur für den Bildschirm)
Marius

0

(Haftungsausschluss: Ich habe kein Bild zum Testen. Wenn Sie ein solches Bild von einer Filesharing-Site freigeben könnten, könnte ich es testen und gegebenenfalls Anpassungen vornehmen, um zu antworten.)

Das Problem hängt höchstwahrscheinlich mit dem fehlenden ICC-Profil zusammen.

Um ein solches Profil einzubetten (oder zu konvertieren), können Sie f.ex verwenden. ImageMagick, um diese Verluste zu beheben, ohne die Daten zu beeinflussen.

ImageMagick:
http://imagemagick.org/script/index.php

Das Befehlszeilenprogramm kann wie folgt verwendet werden, um ein ICC-Profil einzubetten:

convert cmyk.jpg -profile USWebCoatedSWOP.icc cmyk_w_icc.jpg

Konvertieren Sie es optional in den nativen RGB-Farbraum.

Weitere Informationen finden Sie hier:
http://www.imagemagick.org/Usage/formats/#color_profile

Sie können ICC-Profile hier herunterladen:
http://www.adobe.com/support/downloads/detail.jsp?ftpID=4074

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.