Мне приходится иметь дело с CMYK JPEG, извлеченными из источника PDF. PDF-файлы были созданы с помощью Photoshop.
Проблема в том, что Photoshop хранит данные JPEG CMYK в PDF/EPS, используя «нормальные» значения, тогда как в автономных JPEG он хранит инвертированные значения. Таким образом, когда потоки DCTDecode извлекаются побайтно и записываются на диск, результирующие файлы JPEG выглядят инвертированными.
(Фактическое извлечение выполняется собственной утилитой, которая просто извлекает байты из потока DCTDecode и записывает их без изменений в файл, оканчивающийся на . Это в основном .jpg
двоичное копирование и вставка. PDF-файлы доступны для повторного использования. процесса, если это потребуется.)
Поскольку изображения должны оставаться в формате JFIF, есть ли способ поместить маркер в извлеченный .jpg
файл, чтобы Photoshop открыл его с правильной кодировкой? Процесс должен быть без потерь (не включать дальнейшее энтропийное кодирование).
Файлы JPEG уже содержат APP14
маркер, и его удаление не имеет никакого эффекта.
Ниже цитата из libjpeg
документации:
«... кажется, что Adobe Photoshop записывает инвертированные данные в файлы CMYK JPEG: 0 представляет собой 100% покрытие чернилами, а не 0% чернил, как вы ожидаете. ... Photoshop 3.0 [и новее]... записывайте неинвертированные YCCK. в файлах EPS/JPEG... (Но полярность данных, используемая в чистых файлах JPEG, не изменится...)"
Здесь на форумах Adobe такая же проблема с успешными результатами: http://forums.adobe.com/message/4271028
Может тег APP14 не правильный? В тегах APP14 есть нечто большее, чем просто наличие. О тегах JPEG: http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/JPEG.html#Adobe
Сегмент «Adobe» APP14 хранит информацию о кодировании изображения для фильтров DCT. Этот сегмент можно скопировать или удалить как блок с помощью дополнительного тега «Adobe», но обратите внимание, что он не удаляется по умолчанию при удалении всех метаданных, поскольку это может повлиять на внешний вид изображения.
╔════════╦══════════════════╦══════════╦════════════════════════════════════════════╗
║ 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 ║
╚════════╩══════════════════╩══════════╩════════════════════════════════════════════╝
Но это может не помочь, я помню, как кто-то заявил, что эти частные маркеры не предназначены для руководства PDF-Readers, но должны быть правильными массивами декодирования.
Магия, кажется,
/Декодировать 0 1 0 1 0 1 0 1
который инвертировал бы цветовое отображение. (Я предполагаю, что это флаг в libjpeg, что-то подобное должно быть доступно в любом подобном инструменте.) Массивы декодирования распространены в PDF-файлах в соответствии со ссылкой на PDF здесь: http://partners.adobe.com/public/developer/en/pdf /PDFRReference.pdf
Я понятия не имею, можете ли вы добавить эти массивы декодирования в PDF JPEG или вам нужно добавить это к потоковой обработке вашего внутреннего инструмента. У меня нет примера PDF для работы, поэтому я не могу проводить дальнейшие исследования (кроме того, ссылка огромна - tl; dr - но вам, возможно, придется ..)
/Decode
элемент словаря Image XObject в [1 0 1 0 1 0 1 0]
./Decode
элемент присутствует, вы можете поменять местами 0 и 1. Я не смог угадать, каков ваш вариант использования, но если вы извлекаете JPEG из PDF, я думаю инструмент извлечения действительно должен справиться с этим ...pdfimages
для извлечения изображений из PDF. В некоторых случаях файлы JPG инвертируются. Я мог бы изменить байты в этих файлах, но не знаю, где найти эту \Decode
часть. Я до сих пор не понимаю, это параметр для инструмента или фрагмент данных внутри JPG.../Decode
есть (вернее, может быть) в PDF. Вы можете попробовать поменять местами 0 и 1 в PDF перед запуском pdfimages, если элемент /Decode
присутствует. Кроме того, вы можете добавить (или удалить) APP14 из извлеченного PDF-файла. Если вы можете поделиться PDF, я могу попытаться быстро посмотреть для вас.(Отказ от ответственности: у меня нет изображения для тестирования - если вы можете поделиться таким изображением на сайте обмена файлами, я могу протестировать и внести коррективы, чтобы ответить, если это необходимо).
Проблема, скорее всего, связана с отсутствием профиля ICC.
Чтобы встроить (или преобразовать) такой профиль, вы можете использовать f.ex. ImageMagick, чтобы сделать эти файлы потерь, не затрагивая данные.
ImageMagick:
http://imagemagick.org/script/index.php
Утилита командной строки может использоваться для встраивания профиля ICC:
convert cmyk.jpg -profile USWebCoatedSWOP.icc cmyk_w_icc.jpg
При желании конвертируйте его в собственное цветовое пространство RGB.
Подробнее см. здесь:
http://www.imagemagick.org/Usage/formats/#color_profile
Профили ICC можно загрузить отсюда:
http://www.adobe.com/support/downloads/detail.jsp?ftpID=4074 .
Вы можете инвертировать цвета с помощью ImageMagick :
convert input.jpg -negate output.jpg
Результат выглядит хорошо, но он может быть не без потерь. По крайней мере, в некоторых случаях размер файла кажется значительно меньше.
е100
е100
е100
Горацио
Горацио
Горацио
Арс Магика