Les fichiers JPEG CMJN extraits du PDF apparaissent inversés

8

Je dois gérer des fichiers JPEG CMJN extraits d'une source PDF. Les fichiers PDF ont été créés avec Photoshop.

Le problème est que Photoshop stocke les données JPEG CMJN au format PDF / EPS en utilisant des valeurs "normales", tandis que dans les fichiers JPEG autonomes, il stocke les valeurs inversées. Ainsi, lorsque les flux DCTDecode sont extraits par octets et écrits sur le disque, les fichiers JPEG résultants apparaissent inversés.

(L'extraction proprement dite est effectuée par un utilitaire interne, qui extrait simplement les octets du flux DCTDecode et les écrit, non modifiés, dans un fichier se terminant par .jpgIl s'agit essentiellement d'un copier-coller binaire. Les PDF sont disponibles pour le cas échéant.)

Comme les images doivent rester dans leur format JFIF, existe-t-il un moyen de placer un marqueur dans le .jpgfichier extrait pour que Photoshop l'ouvre avec l'encodage approprié? Le processus doit être sans perte (ne pas impliquer de codage entropique supplémentaire).

Les fichiers JPEG contiennent déjà le APP14marqueur et sa suppression n'a aucun effet.

Voici une citation des libjpegdocuments:

"... il semble qu'Adobe Photoshop écrit des données inversées dans des fichiers JPEG CMJN: 0 représente une couverture d'encre de 100%, plutôt que 0% d'encre comme prévu. ... Photoshop 3.0 [et plus récent] ... écrit YCCK non inversé dans les fichiers EPS / JPEG ... (Mais la polarité des données utilisée dans les fichiers JPEG nus ne changera pas ...) "


la source
2
Vous ne pouvez pas simplement automatiser par lots la conversion des fichiers JPEG exportés en encodage CMJN normal? Pourquoi devez-vous marquer les fichiers extraits - vous dites que tous les PDF ont été créés dans Photoshop?
e100
Comment extrayez-vous les JPEG des PDF? Avez-vous déjà un dossier contenant de nombreux fichiers JPEG qui doivent tous être convertis? Il serait bon d'ajouter ces informations à votre question d'origine.
e100
Si vous extrayez les données JPEG par programme, pouvez-vous également automatiser l'arithmétique nécessaire sur les valeurs de couleur en même temps? Je ne sais pas à quel point c'est facile. Oui, vous avez raison, je me demandais vraiment si vous aviez le contrôle du processus d'extraction, ou si vous deviez juste gérer sa sortie
e100
@unsigned: si les valeurs de couleur sont stockées sous forme de flottants, il peut y avoir de grosses erreurs, mais si elles sont stockées sous forme d'entiers, alors les inverser ne devrait pas être si problématique. J'ai l'impression que vous avez omis une partie du flux de travail dans votre question. Notez cependant que CMJN n'est pas pris en charge par le format JPEG, mais plutôt JPG2000. Je ne sais pas si cela fait une différence pour votre choix de bibliothèques ...
horatio
2
Je fais référence à la norme JFIF d'origine qui prend en charge 1 ou 3 couleurs (24 bits). Le manque de prise en charge CMJN a été corrigé dans une norme ultérieure. Avant, les gens créaient des fichiers JPEG à partir de sources CMJN et essayaient de les utiliser sur des sites Web. En ce qui concerne le flux de travail, vous vous êtes opposé à la suggestion du e100 d'utiliser l'automatisation par lots. Photoshop prend cela en charge. Si les couleurs sont simplement inversées, Photoshop peut exécuter un traitement par lots tel que "ouvrir, inverser, enregistrer sous" sur un nombre arbitraire de fichiers.
horatio

Réponses:

5

Ici, sur les forums Adobe, c'est un même problème avec des résultats réussis: http://forums.adobe.com/message/4271028

Peut-être que la balise APP14 n'est pas correcte? Il y a plus de balises APP14 que d'être simplement là. Sur les balises JPEG: http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/JPEG.html#Adobe

Balises Adobe JPEG

Le segment "Adobe" APP14 stocke les informations de codage d'image pour les filtres DCT. Ce segment peut être copié ou supprimé en tant que bloc à l'aide de la balise Extra "Adobe", mais notez qu'il n'est pas supprimé par défaut lors de la suppression de toutes les métadonnées car cela peut affecter l'apparence de l'image.

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

Mais cela pourrait ne pas aider, je me souviens que quelqu'un a déclaré que ces marqueurs privés ne sont pas destinés à guider les lecteurs PDF, mais que les tableaux de décodage appropriés devraient l'être.

La magie semble être

/ Décoder 0 1 0 1 0 1 0 1

qui inverserait le mappage des couleurs. (Je suppose que c'est un indicateur dans libjpeg, quelque chose de similaire devrait être disponible dans n'importe quel outil similaire.) Les tableaux de décodage sont courants dans les PDF selon la référence PDF ici: http://partners.adobe.com/public/developer/en/pdf /PDFReference.pdf

Je n'ai aucune idée si vous pouvez ajouter ces tableaux de décodage dans des fichiers JPEG PDF ou si vous devez les ajouter au traitement de flux de votre outil interne. Je n'ai pas d'exemple de PDF sur lequel travailler, donc je ne peux pas faire d'autres recherches (aussi, la référence est énorme - tl; dr - mais vous devrez peut-être ..)

Ars Magika
la source
1
Cela m'a aidé à intégrer un JPEG CMJN Photoshop dans un PDF pour qu'il s'affiche correctement. J'ai dû définir l'élément de dictionnaire de l'Image XObject /Decodesur [1 0 1 0 1 0 1 0].
Brecht Machiels
Cela m'a également aidé et je peux vérifier que les fichiers JPEG CMJN qui ont été inversés s'affichent désormais correctement. Les RVB n'en ont pas besoin pour moi ... J'ai une question cependant, est-ce vrai pour TOUTES les images CMJN, pas seulement pour certaines? De plus, cela s'imprimera-t-il (toujours) correctement? (Donc pas seulement pour l'écran)
Marius
0

(Avertissement: je n'ai pas d'image pour tester - si vous pouvez partager une telle image par un site de partage de fichiers, je peux tester et apporter des ajustements pour répondre si nécessaire).

Le problème est probablement lié au profil ICC manquant.

Pour intégrer (ou convertir) un tel profil, vous pouvez utiliser f.ex. ImageMagick pour effectuer ces pertes sans affecter les données.

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

L'utilitaire de ligne de commande peut être utilisé comme ceci pour incorporer un profil ICC:

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

Convertissez-le éventuellement en espace colorimétrique RVB natif.

Voir ici pour plus de détails:
http://www.imagemagick.org/Usage/formats/#color_profile

Vous pouvez télécharger des profils ICC ici:
http://www.adobe.com/support/downloads/detail.jsp?ftpID=4074


la source