Estou tendo que lidar com JPEGs CMYK extraídos de uma fonte PDF. Os PDFs foram criados com o Photoshop.
O problema é que o Photoshop armazena dados JPEG CMYK em PDF / EPS usando valores "normais", enquanto que em JPEGs independentes ele armazena valores invertidos. Portanto, quando os fluxos DCTDecode são extraídos no sentido horário e gravados no disco, os arquivos JPEG resultantes aparecem invertidos.
(A extração real é feita por um utilitário interno, que simplesmente extrai os bytes do fluxo DCTDecode e os grava, sem modificações, em um arquivo que termina em .jpg
É basicamente uma cópia e cola binária. Os PDFs estão disponíveis para processo, caso seja necessário.)
Como as imagens devem permanecer no formato JFIF, existe alguma maneira de colocar um marcador no .jpg
arquivo extraído para fazer o Photoshop abri-lo com a codificação adequada? O processo deve ser sem perdas (não envolve codificação adicional de entropia).
Os JPEGs já contêm o APP14
marcador e sua remoção não tem efeito.
Abaixo está uma citação dos libjpeg
documentos:
"... parece que o Adobe Photoshop grava dados invertidos em arquivos JPEG CMYK: 0 representa 100% de cobertura de tinta, em vez de 0% de tinta conforme o esperado. ... Photoshop 3.0 [e mais recente] ... grava YCCK não invertido em arquivos EPS / JPEG ... (Mas a polaridade dos dados usada em arquivos JPEG nulos não muda ...) "
Respostas:
Aqui nos fóruns da Adobe, há um mesmo problema com resultados bem-sucedidos: http://forums.adobe.com/message/4271028
Talvez a tag APP14 não esteja correta? Há mais tags APP14 do que apenas estar lá. Em tags JPEG: http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/JPEG.html#Adobe
Tags Adobe Adobe
O segmento APP14 "Adobe" armazena informações de codificação de imagem para filtros DCT. Esse segmento pode ser copiado ou excluído como um bloco usando a tag "Adobe" extra, mas observe que ele não é excluído por padrão ao excluir todos os metadados, pois pode afetar a aparência da imagem.
Mas isso pode não ajudar, lembro-me de alguém afirmando que esses marcadores particulares não têm a intenção de orientar os leitores de PDF, mas sim as matrizes de decodificação adequadas.
A mágica parece ser
o que inverteria o mapeamento de cores. (Acho que é um sinalizador no libjpeg, algo semelhante deve estar disponível em qualquer ferramenta similar.) Arrays de decodificação são comuns em PDFs de acordo com a Referência em PDF aqui: http://partners.adobe.com/public/developer/en/pdf /PDFReference.pdf
Não faço idéia se você pode adicionar essas matrizes de decodificação em JPEGs PDF ou precisa adicioná-lo ao processamento de fluxo da sua ferramenta interna. Não tenho um exemplo de PDF para trabalhar, portanto não posso fazer mais pesquisas (também, a referência é enorme - tl; dr - mas você pode precisar ..)
fonte
/Decode
item de dicionário do Image XObject para[1 0 1 0 1 0 1 0]
.(Dislaimer: não tenho imagem para testar - se você puder compartilhá-la em um site de compartilhamento de arquivos, posso testar e fazer ajustes para responder, se necessário).
O problema está provavelmente relacionado à falta do perfil ICC.
Para incorporar (ou converter) esse perfil, você pode usar f.ex. ImageMagick para fazer esses arquivos de perda sem afetar os dados.
ImageMagick:
http://imagemagick.org/script/index.php
O utilitário de linha de comando pode ser usado como este para incorporar um perfil ICC:
Opcionalmente, converta-o para o espaço de cores RGB nativo.
Veja aqui para mais detalhes:
http://www.imagemagick.org/Usage/formats/#color_profile
Você pode fazer o download dos perfis ICC aqui:
http://www.adobe.com/support/downloads/detail.jsp?ftpID=4074
fonte