CMYK JPEG yang diekstrak dari PDF nampak terbalik


8

Saya harus berurusan dengan CMYK JPEG yang diekstrak dari sumber PDF. PDF dibuat dengan Photoshop.

Masalahnya adalah bahwa Photoshop menyimpan data JPEG CMYK dalam PDF / EPS menggunakan nilai "normal", sedangkan dalam JPEG yang berdiri sendiri ia menyimpan nilai yang terbalik. Jadi, ketika aliran DCTDecode diekstraksi secara bersamaan dan ditulis ke disk, file JPEG yang dihasilkan muncul terbalik.

(Ekstraksi yang sebenarnya dilakukan oleh utilitas in-house, yang hanya mengekstrak byte dari aliran DCTDecode dan menulisnya, tidak dimodifikasi, ke file yang berakhir pada .jpgdasarnya adalah copy dan paste biner. PDF tersedia untuk proses, jika itu diperlukan.)

Karena gambar harus tetap dalam format JFIF, apakah ada cara untuk menempatkan penanda ke .jpgfile yang diekstraksi untuk membuat Photoshop membukanya dengan pengkodean yang tepat? Prosesnya harus lossless (tidak melibatkan encoding entropi lebih lanjut).

JPEG sudah mengandung APP14penanda, dan menghapusnya tidak berpengaruh.

Di bawah ini adalah kutipan dari libjpegdokumen:

"... tampaknya Adobe Photoshop menulis data terbalik dalam file CMYK JPEG: 0 mewakili cakupan tinta 100%, daripada tinta 0% seperti yang Anda harapkan. ... Photoshop 3.0 [dan yang lebih baru] ... tulis YCCK yang belum diinversi dalam file EPS / JPEG ... (Tetapi polaritas data yang digunakan dalam file JPEG kosong tidak akan berubah ...) "


2
Tidak bisakah Anda hanya mengotomatiskan konversi JPEG yang diekspor kembali ke pengkodean CMYK biasa? Mengapa Anda perlu menandai file yang diekstraksi - Anda mengatakan semua PDF tidak dibuat di Photoshop?
e100

Bagaimana Anda mengekstraksi JPEG dari PDF? Apakah Anda sudah memiliki folder yang berisi banyak JPEG yang semuanya perlu dikonversi? Akan bagus untuk menambahkan info ini ke pertanyaan awal Anda.
e100

Jika Anda mengekstraksi data JPEG secara terprogram, dapatkah Anda juga mengotomatisasi aritmatika yang diperlukan pada nilai warna pada saat yang sama? Tidak yakin betapa mudahnya ini. Ya, Anda benar, saya benar-benar bertanya-tanya apakah Anda memiliki kendali atas proses ekstraksi, atau hanya harus menangani hasilnya
e100

@ tidak ditandai: jika nilai warna disimpan sebagai float, mungkin ada kesalahan besar, tetapi jika mereka disimpan sebagai bilangan bulat, maka pembalikannya seharusnya tidak terlalu bermasalah. Saya merasa seperti Anda telah meninggalkan bagian dari alur kerja dalam pertanyaan Anda. Namun perlu dicatat bahwa CMYK tidak didukung oleh format JPEG, melainkan JPG2000. Saya tidak tahu apakah ini membuat perbedaan untuk perpustakaan pilihan Anda ...
horatio

2
Saya mengacu pada standar JFIF asli yang mendukung 1 atau 3 warna (24-bit). Kurangnya dukungan CMYK diperbaiki di standar kemudian. Dulu ada masalah ketika orang akan membuat jpeg dari sumber CMYK dan mencoba dan menggunakannya di situs web. Sejauh alur kerja, Anda keberatan dengan saran E100 untuk menggunakan otomatisasi bets. Photoshop mendukung ini. Jika warnanya terbalik, maka Photoshop dapat menjalankan proses batch seperti "buka, balikkan, simpan sebagai" pada jumlah file yang berubah-ubah.
horatio

Jawaban:


5

Di sini, di forum Adobe adalah masalah yang sama dengan hasil yang sukses: http://forums.adobe.com/message/4271028

Mungkin tag APP14 tidak benar? Ada lebih banyak untuk tag APP14 daripada hanya ada di sana. Pada tag JPEG: http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/JPEG.html#Adobe

Tag JPEG Adobe

Segmen "Adobe" APP14 menyimpan informasi penyandian gambar untuk filter DCT. Segmen ini dapat disalin atau dihapus sebagai blok menggunakan tag "Adobe" Ekstra, tetapi perhatikan bahwa itu tidak dihapus secara default ketika menghapus semua metadata karena dapat memengaruhi tampilan gambar.

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

Tapi itu mungkin tidak membantu, saya ingat seseorang yang menyatakan bahwa penanda pribadi ini tidak dimaksudkan untuk memandu PDF-Readers tetapi array decode yang tepat harus.

Keajaiban tampaknya

/ Decode 0 1 0 1 0 1 0 1

yang akan membalikkan pemetaan warna. (Saya kira itu adalah bendera di libjpeg, sesuatu yang serupa harus tersedia di alat serupa). Array dekode adalah umum dalam PDF sesuai dengan Referensi PDF di sini: http://partners.adobe.com/public/developer/en/pdf /PDFReferensi.pdf

Saya tidak tahu apakah Anda dapat menambahkan larik dekode ini ke dalam JPEG PDF atau apakah Anda perlu menambahkannya ke pemrosesan aliran alat in-house Anda. Saya tidak punya contoh PDF untuk dikerjakan, jadi saya tidak bisa melakukan penelitian lebih lanjut (juga, referensi sangat besar - tl; dr - tetapi Anda mungkin harus ..)


1
Ini membantu saya mendapatkan Photoshop CMYK JPEG yang tertanam dalam PDF untuk ditampilkan dengan benar. Saya harus mengatur /Decodeitem kamus Image XObject ke [1 0 1 0 1 0 1 0].
Brecht Machiels

Ini membantu saya juga, dan saya dapat memverifikasi itu, CMYK JPEG yang terbalik sekarang membuat dengan benar. Yang RGB tidak membutuhkan ini untuk saya ... Namun saya punya satu pertanyaan, apakah ini benar untuk SEMUA gambar CMYK, bukan hanya beberapa? Juga, apakah ini (selalu) akan dicetak dengan benar? (Jadi bukan hanya untuk layar)
Marius

0

(Penafian: Saya tidak memiliki gambar untuk diuji - jika Anda dapat membagikan gambar tersebut dengan situs berbagi file saya dapat menguji dan membuat penyesuaian untuk menjawab jika diperlukan).

Masalahnya kemungkinan besar terkait dengan hilangnya profil ICC.

Untuk menanamkan (atau mengonversi) profil semacam itu, Anda dapat menggunakan f.ex. ImageMagick untuk melakukan loss-les ini tanpa memengaruhi data.

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

Utilitas baris perintah dapat digunakan karena ini untuk menanamkan profil ICC:

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

Secara opsional, konversikan ke ruang warna RGB asli.

Lihat di sini untuk detail lebih lanjut:
http://www.imagemagick.org/Usage/formats/#color_profile

Anda dapat mengunduh profil ICC dari sini:
http://www.adobe.com/support/downloads/detail.jsp?ftpID=4074

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.