Illustrator'da açıldığında belirli PNG dosyalarının renkleri neden bozuluyor?


11

Illustrator'da bir iPhone ekran görüntüsü açmaya çalışıyordum, ancak bazı nedenlerden dolayı renkler bozuk. Aynı dosyayı başka bir uygulamada (Photoshop, GIMP, Önizleme vb.) Açarsam renkler düzgün bir şekilde işlenir. İlginç olan şey, Illustrator'ın renkleri bozmadan açtığı ana ekranın ekran görüntüsünü de test ettiğim için bunun sadece belirli ekran görüntülerinde gerçekleşmesidir.

Bununla birlikte, GIMP ile şunları belirten bir iletişim kutusu açılır:

'IMG_1199.PNG' resmi ve katıştırılmış renk profiline sahiptir:

Ekran P3

Görüntüyü RGB çalışma alanına dönüştürmek (dahili sRGB)?

Renk profilini tutma veya dönüştürme seçeneği ile; bu da Illustrator uygulamasının yukarıda belirtilen renk profilini tanımayabileceğini düşündürüyor.

İşte orijinal görüntü doğrudan telefondan [sol] ve görüntü Illustrator'dan [sağ] açıldı (kaydedildi):

iPhone Tuş Takımı Ekran Görüntüsü iPhone Tuş Takımı Ekran Görüntüsü Bozuk


Güncelleme

Renk profilini GIMP'ye dönüştürmek, kaydetmek, ardından dosyayı Illustrator'da tekrar açmak sorunu çözer. Bu, P3 renk profilinin Display profili sorunudur ve bu da sorumu bir şekilde değiştiriyor: şüphesiz görüntüyü önceden dönüştürmeden resmi Illustrator'da nasıl açabilirim?

Bu, Illustrator'da bir hata olabilir gibi görünüyor, bu yüzden Adobe'ye bir hata raporu gönderdim. Raporun kesin olup olmadığını veya Adobe'nin bir çözüm sağladığını güncelleyeceğim.


1
Psychedelic! Bunu görmek için hap yiyen insanları tanıyorum. Merhaba Bryan, GDSE'ye hoş geldiniz ve sorunuz için teşekkürler. Bu SE hakkında herhangi bir sorunuz varsa, yardım merkezine bir göz atın veya Graphic Design Chat'e katılmaktan çekinmeyin ! Katkıda bulunmaya devam edin ve burada zaman zevk.
Vincent

İPhone ekran görüntüleri ile ilgili çok fazla sorun yaşadım ama hiç böyle bir şey yaşamadım. Etkileyici.
Cai

P3 renk profili 10bpp renk (30bit olarak da bilinir) anlamına mı geliyor? Bu bir hata mı, yoksa AI sadece 10bpp ile başa çıkamıyor mu (ARGB 02 10 10 10)? Akılları Bilmek İstiyorum. (değiştir: net olmak için, hiçbir fikrim yok gibi, gerçekten bilmek istiyorum)
Yorik

Garip: Her ikisi de, GraphicsMagick identifyve Linux ' file, .png sonekine rağmen solda yayınlanan ekran görüntünüzü jpg olarak tanımlar. Bu orijinal / değiştirilmemiş ekran görüntüsü mü? Soneki .png olarak yeniden adlandırdınız mı? Belki de sorun budur. Soneki jpg olarak değiştirmeye çalışın ve tekrar açın.
Socowi

@Socowi Huh, bu garip, macOS'taki filekomutu kullanarak kendim test ettim . JPEG image dataBilgi penceresi hala bir PNG dosyası olarak görüntülenmesine rağmen de karşınıza çıkıyor . İmgur'un fotoğrafları ölçeklendirmek için yaptığı bir şey olmalı. Eğer görüntüyü indirirseniz tam boy bağlantıfile komutu bir PNG dosyası olarak doğru tanıması gerekir.
Bryan

Yanıtlar:


9

Muhtemelen ne olur: Ekran görüntüsü 16 bit png, ancak illustratör bunu sadece 8 alt (!) Bit kullanarak 8 bit png olarak okuyor.

açıklama

Aşağıdaki açıklama için ekran görüntüsünün 16 bit gri tonlamalı bir görüntü olduğunu, yani her pikselin bir sayı olduğunu varsayıyoruz.

siyah = 0 = 0x0000 = 0b 0000 0000 0000 0000

ve

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

(0x onaltılık sayıları ve 0b ikili sayıları gösterir)

Illustrator, bu 16 bitin sadece 8'ini, ne yazık ki yanlış olanları, en az önemli olanları yüklüyor gibi görünüyor. Tek sorun en az önemli bitleri seçmek.

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

İçe aktarma işleminden sonra illustrator, yorumu (bu sayı beyaz, siyah olan) yeni maksimum sayıya göre ölçeklendirir:

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

Piksellerimizden birinin 0b 1111 1111 0000 00001 = 0xFF01 = 65281 değerine sahip olduğunu varsayalım, bu neredeyse beyaz. İçe aktarma işleminden sonra değer 0b 0000 0001 = 0x01 = 1 olacaktır, bu neredeyse siyahtır.

999.1'den 1'e "yuvarlama" gibi - tamamen yanlış!

Simülasyon

Açıklanan sorunun bizim sorunumuz olduğundan nasıl emin olabiliriz? Hatayı simüle ediyoruz!

Aşağıdaki python programı yukarıda açıklandığı gibi 16 bit ekran görüntüsünü yükler.
(Lütfen beni yargılama, bu benim ilk python programım.)

#! /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)

Simüle edilmiş hata
sonuç Orijinal boyut bug.png
için buraya ve OP'nin sürümüyle karşılaştırmak için buraya tıklayın .

Gördüğümüz gibi, simülasyonumuz tamamen aynı sonucu veriyor.

Geçici çözüm

Sadece bir geçici çözüm düşünebilirsiniz (çünkü ben Illustrator kullanmıyorum):

Ekran görüntülerinizi 8 bit png'ye dönüştürün

GraphicsMagick ve / veya ImageMagick, bu iş için uygun olan konsol araçlarıdır. Aşağıdaki komut 8 bit png'ye dönüştürür:

convert original.png -depth 8 converted.png

Vay, derinlemesine açıklama için teşekkür ederim. Adobe henüz hata raporuma cevap vermedi, ancak herhangi bir şansla, Illustrator'a uygun 16 bit renk desteği ekleyeceklerini umuyorum. Ya da en azından 8 bit renge doğru şekilde yuvarlayın.
Bryan

1

Şimdi bu korkak bir mesele.

GIMP zaten bize bir ipucu veriyor ve ekran görüntüsünün renk profiliyle ilgili bir şüphe olduğunu doğrulıyor. Günlük sRGB ve 8bit kanal başına dönüştürmek, Illustrator'ın CMYK olarak çekmeye çalışırken işleri karıştırmasını engelleyebilir.


1

Bu geç oldu, ancak basit bir geçici çözüm (Mac kullanıcıları için) PNG'yi Önizleme'de açmak, ardından varsayılan 16 bit seçeneğini 8 bit seçeneğine geçirerek PNG olarak dışa aktarmaktır. Herhangi bir ek yazılım gerektirmez ve sadece birkaç saniye sürer.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.