Mengapa warna file PNG tertentu terdistorsi saat dibuka di Illustrator?

11

Saya mencoba membuka tangkapan layar iPhone di Illustrator, tetapi karena beberapa alasan warnanya terdistorsi. Jika saya membuka file yang sama di aplikasi lain (Photoshop, GIMP, Preview, dll.) Warna-warna yang diberikan tidak masalah. Yang aneh adalah bahwa ini hanya terjadi pada tangkapan layar tertentu, ketika saya menguji tangkapan layar dari layar beranda juga, yang dibuka Illustrator tanpa mengubah warna.

Padahal, dengan GIMP, sebuah dialog tidak muncul menyatakan:

Gambar 'IMG_1199.PNG' memiliki dan menyematkan profil warna:

Tampilan P3

Konversi gambar ke ruang kerja RGB (sRGB built-in)?

Dengan opsi untuk menyimpan atau mengonversi profil warna; yang membuat saya berpikir Illustrator mungkin tidak mengenali profil warna yang disebutkan di atas.

Ini adalah gambar asli langsung dari ponsel [kiri] dan gambar dibuka (kemudian disimpan) dari Illustrator [kanan]:

Screenshot Keypad iPhone Screenshot Keypad iPhone Terdistorsi


Memperbarui

Mengonversi profil warna di GIMP, menyimpan, lalu membuka kembali file di Illustrator akan menyelesaikan masalah. Ini sepertinya mengkonfirmasi kecurigaan saya bahwa profil warna Display P3 adalah masalah, yang agak mengubah pertanyaan saya: bagaimana saya bisa membuka gambar di Illustrator tanpa terlebih dahulu mengonversi gambar?

Sepertinya ini bug di Illustrator, jadi saya telah mengirimkan laporan bug ke Adobe. Saya akan memperbarui jika laporan itu konklusif, atau jika Adobe memberikan solusi.

Bryan
sumber
1
Psychedelic! Saya tahu orang-orang yang makan pil untuk melihat ini. Hai Bryan, selamat datang di GDSE dan terima kasih atas pertanyaan Anda. Jika Anda memiliki pertanyaan tentang SE ini, kunjungi pusat bantuan atau silakan bergabung dengan kami di Obrolan Desain Grafis ! Teruslah berkontribusi dan nikmati waktu Anda di sini.
Vincent
Saya punya banyak masalah dengan screenshot iPhone tetapi saya tidak pernah mengalami hal seperti itu. Impresif.
Cai
Apakah profil warna P3 menyiratkan warna 10bpp (alias 30bit)? Apakah ini bug, atau AI tidak mampu menangani 10bpp (ARGB 02 10 10 10)? Pikiran Bertanya Ingin Tahu. (sunting: agar jelas, saya benar-benar ingin tahu, karena saya tidak tahu)
Yorik
Aneh: Keduanya, GraphicsMagick's identifydan Linux ' file, mengidentifikasi screenshot Anda yang diposkan di sebelah kiri sebagai jpg meskipun sufiks .png. Apakah ini tangkapan layar asli / tidak dimodifikasi? Apakah Anda mengganti nama suffix menjadi .png? Mungkin itu masalahnya. Coba ubah sufiks menjadi jpg dan buka lagi.
Socowi
@ Socowi Huh, itu aneh, saya mengujinya sendiri menggunakan fileperintah pada macOS. Itu muncul JPEG image datajuga, meskipun jendela info masih menampilkannya sebagai file PNG. Pasti sesuatu yang dilakukan Imgur untuk mengukur skala foto. Jika Anda mengunduh gambar dari tautan ukuran penuh , fileperintah itu harus mengenalinya dengan benar sebagai file PNG.
Bryan

Jawaban:

9

Apa yang mungkin terjadi: tangkapan layar png 16-bit, tetapi ilustrator membacanya sebagai png 8-bit, hanya menggunakan 8 bit (!) Yang lebih rendah.

Penjelasan

Untuk penjelasan berikut, kami berasumsi bahwa tangkapan layar adalah gambar abu-abu 16-bit, yaitu setiap piksel adalah angka di antaranya

hitam = 0 = 0x0000 = 0b 0000 0000 0000 0000

dan

(16-bit) putih = 2 ^ 16-1 = 65535 = 0xFFFF = 0b 1111 1111 1111 1111.

(0x menunjukkan angka heksadesimal dan 0b menunjukkan angka biner)

Illustrator tampaknya memuat hanya 8 dari 16 bit ini, sayangnya yang salah, itu yang paling signifikan. Memilih bit paling signifikan adalah satu-satunya masalah.

0b #### #### #### ####
   \_______/ \_______/
   discarded   loaded

Setelah impor, ilustrator akan membuat skala penafsiran (yang putih, yang hitam) sesuai dengan jumlah maksimum yang baru:

(8-bit) putih = 2 ^ 8-1 = 255 = 0xFF = 0xb 1111 1111.

Anggap salah satu piksel kami memiliki nilai 0b 1111 1111 0000 00001 = 0xFF01 = 65281, yang hampir putih. Setelah impor, nilainya akan 0b 0000 0001 = 0x01 = 1, hampir hitam.

Ini seperti "pembulatan" 999.1 ke 1 - sepenuhnya salah!

Simulasi

Bagaimana kita bisa yakin bahwa masalah yang dijelaskan adalah masalah kita? Kami mensimulasikan bug!

Program python berikut memuat screenshot 16-bit seperti yang dijelaskan di atas.
(Tolong jangan menilai saya, ini adalah program python pertama saya.)

#! /usr/bin/python
import numpy as np
import cv2

# load picture
img = cv2.imread('screen.png', 3)

# assert (by hand) that picture is loaded as 16 bit image
print img.dtype

# simulate the bug
img[:,:] &= 0x00FF # use only 8 least significant bits
img[:,:] <<= 8     # rescale

# save the picture
cv2.imwrite('bug.png',img)

Bug simulasi
hasilnya bug.png
Klik di sini untuk ukuran asli, dan di sini untuk membandingkan dengan versi OP.

Seperti yang dapat kita lihat, simulasi kita menghasilkan hasil yang persis sama.

Penanganan masalah

Saya hanya dapat memikirkan satu solusi (karena saya tidak menggunakan ilustrator):

Ubah tangkapan layar Anda menjadi 8-bit pngs

GraphicsMagick dan / atau ImageMagick adalah alat konsol yang nyaman untuk pekerjaan ini. Perintah berikut ini dikonversi ke pngs 8-bit:

convert original.png -depth 8 converted.png
Socowi
sumber
Wow, terima kasih atas penjelasannya yang mendalam. Adobe belum menanggapi laporan bug saya, tetapi dengan sedikit keberuntungan semoga mereka akan menambahkan dukungan warna 16-bit ke Illustrator. Atau paling tidak membulatkannya ke warna 8-bit dengan benar.
Bryan
1

Nah, itu beberapa masalah yang funky.

GIMP sudah memberi kami petunjuk, membenarkan dugaan bahwa itu adalah sesuatu dengan profil warna tangkapan layar. Mengubahnya menjadi sRGB dan 8bit setiap hari Anda dapat menghindari Illustrator untuk mengacaukannya saat mencoba menariknya sebagai CMYK.

Lucas Flicky
sumber
1

Ini adalah WAY terlambat, tetapi solusi sederhana (untuk pengguna Mac) adalah membuka PNG di Pratinjau, lalu Mengekspornya sebagai PNG yang mengalihkan opsi 16-bit default ke opsi 8-bit. Tidak memerlukan perangkat lunak tambahan apa pun, dan hanya perlu beberapa detik.

Tanah liat
sumber