I JPEG CMYK estratti da PDF appaiono invertiti


8

Ho a che fare con i JPEG CMYK estratti da una fonte PDF. I PDF sono stati creati con Photoshop.

Il problema è che Photoshop archivia i dati CMYK JPEG in PDF / EPS usando valori "normali", mentre in JPEG autonomi memorizza valori invertiti. Pertanto, quando i flussi DCTDecode vengono estratti in senso byte e scritti su disco, i file JPEG risultanti vengono visualizzati invertiti.

(L'estrazione effettiva viene eseguita da un'utilità interna, che estrae semplicemente i byte dal flusso DCTDecode e li scrive, non modificati, in un file che termina in .jpgÈ fondamentalmente un copia-e-incolla binario. I PDF sono disponibili per ri processo, se necessario.)

Dato che le immagini devono rimanere nel loro formato JFIF, c'è un modo per posizionare un marcatore nel .jpgfile estratto per fare in modo che Photoshop lo apra con la codifica corretta? Il processo deve essere senza perdita di dati (non implica un'ulteriore codifica entropica).

I JPEG contengono già il APP14marker e rimuoverlo non ha alcun effetto.

Di seguito è una citazione dai libjpegdocumenti:

"... sembra che Adobe Photoshop scriva i dati invertiti nei file JPEG CMYK: 0 rappresenta il 100% di copertura dell'inchiostro, anziché lo 0% di inchiostro come ci si aspetterebbe. ... Photoshop 3.0 [e più recenti] ... scrivere YCCK non convertito nei file EPS / JPEG ... (Ma la polarità dei dati utilizzata nei file JPEG non cambierà ...) "


2
Non puoi semplicemente automatizzare in batch la conversione dei JPEG esportati indietro alla normale codifica CMYK? Perché hai bisogno di contrassegnare i file estratti - dici che tutti i PDF sono stati creati in Photoshop?
e100,

Come stai estraendo i file JPEG dai PDF? Hai già una cartella contenente molti file JPEG che devono essere tutti convertiti? Sarebbe bene aggiungere queste informazioni alla domanda originale.
e100,

Se si stanno estraendo i dati JPEG a livello di codice, è possibile automatizzare contemporaneamente anche l'aritmetica necessaria sui valori di colore? Non sono sicuro di quanto sia facile. Sì, hai ragione, mi stavo davvero chiedendo se tu avessi il controllo del processo di estrazione o se dovessi semplicemente gestirne l'output
e100

@unsigned: se i valori di colore sono memorizzati come float, potrebbero esserci grandi errori, ma se sono memorizzati come numeri interi, invertirli non dovrebbe essere così problematico. Sento che hai lasciato fuori parte del flusso di lavoro nella tua domanda. Si noti tuttavia che CMYK non è supportato dal formato JPEG, ma piuttosto JPG2000. Non so se questo fa la differenza per la tua scelta di biblioteche ...
horatio,

2
Mi riferisco allo standard JFIF originale che supporta 1 o 3 colori (24 bit). La mancanza di supporto CMYK è stata corretta in uno standard successivo. Un tempo era un problema quando le persone creavano jpeg da fonti CMYK e cercavano di usarle su siti web. Per quanto riguarda il flusso di lavoro, hai contestato il suggerimento di e100 di utilizzare l'automazione batch. Photoshop supporta questo. Se i colori vengono semplicemente invertiti, Photoshop può eseguire un processo batch come "apri, inverti, salva come" su un numero arbitrario di file.
horatio,

Risposte:


5

Qui sui forum Adobe c'è lo stesso problema con risultati positivi: http://forums.adobe.com/message/4271028

Forse il tag APP14 non è corretto? C'è di più ai tag APP14 che non solo essere lì. Sui tag JPEG: http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/JPEG.html#Adobe

Tag Adobe JPEG

Il segmento APP14 "Adobe" memorizza le informazioni di codifica delle immagini per i filtri DCT. Questo segmento può essere copiato o eliminato come blocco utilizzando il tag Extra "Adobe", ma tieni presente che non viene eliminato per impostazione predefinita quando elimini tutti i metadati perché potrebbe influire sull'aspetto dell'immagine.

╔════════╦══════════════════╦══════════╦════════════════════════════════════════════╗
║ 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                                   ║
╚════════╩══════════════════╩══════════╩════════════════════════════════════════════╝

Ma ciò potrebbe non essere d'aiuto, ricordo qualcuno che afferma che questi marcatori privati ​​non sono destinati a guidare i lettori di PDF, ma dovrebbero esserlo gli array di decodifica appropriati.

La magia sembra essere

/ Decodifica 0 1 0 1 0 1 0 1

che invertirebbe la mappatura dei colori. (Immagino che sia una bandiera in libjpeg, qualcosa di simile dovrebbe essere disponibile in qualsiasi strumento simile.) Gli array di decodifica sono comuni nei PDF in base al riferimento PDF qui: http://partners.adobe.com/public/developer/en/pdf /PDFReference.pdf

Non ho idea se è possibile aggiungere questi array di decodifica in PDF JPEG o è necessario aggiungerlo all'elaborazione in streaming del proprio strumento interno. Non ho PDF di esempio su cui lavorare, quindi non posso fare ulteriori ricerche (inoltre, il riferimento è enorme - tl; dr - ma potresti dover ...)


1
Questo mi ha aiutato a ottenere un Photoshop CMYK JPEG incorporato in un PDF per visualizzarlo correttamente. Ho dovuto impostare l'elemento del dizionario di Image XObject /Decodesu [1 0 1 0 1 0 1 0].
Brecht Machiels,

Anche questo mi ha aiutato e posso verificare che i JPEG CMYK invertiti ora vengono visualizzati correttamente. Quelle RGB non hanno bisogno di questo per me ... Ho una domanda comunque, sarà vero per TUTTE le immagini CMYK, non solo per alcune? Inoltre, questo (sempre) verrà stampato correttamente? (Quindi non solo per lo schermo)
Marius,

0

(Dichiarazione di non responsabilità: non ho alcuna immagine con cui testare - se potessi condividere tale immagine con un sito di condivisione file posso testare e apportare modifiche per rispondere se necessario).

Molto probabilmente il problema è legato alla mancanza del profilo ICC.

Per incorporare (o convertire) un tale profilo è possibile utilizzare f.ex. ImageMagick esegue queste perdite senza influire sui dati.

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

L'utilità della riga di comando può essere utilizzata in questo modo per incorporare un profilo ICC:

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

Facoltativamente, convertilo in spazio colore RGB nativo.

Vedi qui per maggiori dettagli:
http://www.imagemagick.org/Usage/formats/#color_profile

Puoi scaricare i profili ICC da qui:
http://www.adobe.com/support/downloads/detail.jsp?ftpID=4074

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.