Warum werden die Farben bestimmter PNG-Dateien beim Öffnen in Illustrator verzerrt?

11

Ich habe versucht, einen iPhone-Screenshot in Illustrator zu öffnen, aber aus irgendeinem Grund sind die Farben verzerrt. Wenn ich dieselbe Datei in einer anderen Anwendung (Photoshop, GIMP, Vorschau usw.) öffne, werden die Farben gut gerendert. Das Merkwürdige ist, dass dies nur bei bestimmten Screenshots auftritt, da ich auch einen Screenshot des Startbildschirms getestet habe, den Illustrator geöffnet hat, ohne die Farben zu verzerren.

Bei GIMP wird jedoch ein Dialogfeld angezeigt, in dem Folgendes angegeben wird:

Das Bild 'IMG_1199.PNG' hat ein eingebettetes Farbprofil:

Anzeige P3

Das Bild in den RGB-Arbeitsbereich konvertieren (sRGB integriert)?

Mit der Option, das Farbprofil entweder beizubehalten oder zu konvertieren; Das lässt mich denken, dass Illustrator das oben genannte Farbprofil möglicherweise nicht erkennt.

Hier ist das Originalbild direkt vom Telefon [links] und das Bild wurde in Illustrator [rechts] geöffnet (und dann gespeichert):

Screenshot der iPhone-Tastatur Screenshot der iPhone-Tastatur verzerrt


Aktualisieren

Durch Konvertieren des Farbprofils in GIMP, Speichern und erneutes Öffnen der Datei in Illustrator wird das Problem behoben. Dies scheint meinen Verdacht zu bestätigen, dass das Farbprofil Display P3 das Problem ist, was meine Frage etwas ändert: Wie kann ich das Bild in Illustrator öffnen, ohne es vorher zu konvertieren?

Dies scheint ein Fehler in Illustrator zu sein, daher habe ich einen Fehlerbericht an Adobe gesendet. Ich werde aktualisieren, wenn der Bericht endgültig ist oder wenn Adobe eine Lösung bereitstellt.

Bryan
quelle
1
Psychedelisch! Ich kenne Leute, die Pillen essen, um das zu sehen. Hey Bryan, willkommen bei GDSE und danke für deine Frage. Wenn Sie Fragen zu dieser SE haben, schauen Sie in die Hilfe oder nehmen Sie am Graphic Design Chat teil ! Tragen Sie weiter bei und genießen Sie Ihre Zeit hier.
Vincent
Ich hatte viele Probleme mit iPhone-Screenshots, aber so etwas hatte ich noch nie. Beeindruckend.
Cai
Bedeutet ein P3-Farbprofil eine Farbe von 10 Bit / s (auch bekannt als 30 Bit)? Ist dies ein Fehler oder kann AI 10bpp (ARGB 02 10 10 10) einfach nicht verarbeiten? Neugierige wollen es wissen. (bearbeiten: um klar zu sein, ich möchte es wirklich wissen, da ich keine Ahnung habe)
Yorik
Seltsam: Sowohl GraphicsMagick's identifyals auch Linux ' fileidentifizieren Ihren geposteten Screenshot auf der linken Seite trotz des .png-Suffix als JPG. Ist das der ursprüngliche / unveränderte Screenshot? Haben Sie das Suffix in .png umbenannt? Vielleicht ist das das Problem. Versuchen Sie, das Suffix in jpg zu ändern und es erneut zu öffnen.
Socowi
@Socowi Huh, das ist seltsam, ich habe es selbst mit dem fileBefehl unter macOS getestet . Es wird ebenfalls JPEG image dataangezeigt, obwohl das Infofenster es weiterhin als PNG-Datei anzeigt. Es muss etwas sein, was Imgur tut, um die Fotos zu skalieren. Wenn Sie das Bild über den Link in voller Größe herunterladen, filesollte der Befehl es korrekt als PNG-Datei erkennen.
Bryan

Antworten:

9

Was wahrscheinlich passiert: Der Screenshot ist ein 16-Bit-PNG, aber der Illustrator liest ihn als 8-Bit-PNG, wobei nur die 8 unteren (!) Bits verwendet werden.

Erläuterung

Für die folgende Erklärung nehmen wir an, dass der Screenshot ein 16-Bit-Graustufenbild ist, dh jedes Pixel ist eine Zahl dazwischen

schwarz = 0 = 0x0000 = 0b 0000 0000 0000 0000

und

(16-Bit) Weiß = 2 ^ 16-1 = 65535 = 0xFFFF = 0b 1111 1111 1111 1111.

(0x bezeichnet Hexadezimalzahlen und 0b bezeichnet Binärzahlen)

Illustrator scheint nur 8 dieser 16 Bits zu laden, leider die falschen, das sind die niedrigstwertigen. Die Auswahl der niedrigstwertigen Bits ist das einzige Problem.

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

Nach dem Import skaliert der Illustrator die Interpretation (welche Zahl ist weiß, welche schwarz) entsprechend der neuen maximalen Anzahl:

(8-Bit) Weiß = 2 ^ 8-1 = 255 = 0xFF = 0xb 1111 1111.

Angenommen, eines unserer Pixel hatte den Wert 0b 1111 1111 0000 00001 = 0xFF01 = 65281, dh fast weiß. Nach dem Import ist der Wert 0b 0000 0001 = 0x01 = 1, dh fast schwarz.

Es ist wie "Runden" 999,1 auf 1 - völlig falsch!

Simulation

Wie können wir sicher sein, dass das beschriebene Problem unser Problem ist? Wir simulieren den Fehler!

Das folgende Python-Programm lädt den 16-Bit-Screenshot wie oben beschrieben.
(Bitte beurteilen Sie mich nicht, es ist mein erstes Python-Programm.)

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

Simulierter Fehler
Das Ergebnis bug.png
Klicken Sie hier für die Originalgröße und hier , um sie mit der OP-Version zu vergleichen.

Wie wir sehen können, liefert unsere Simulation genau das gleiche Ergebnis.

Problemumgehung

Ich kann mir nur eine Problemumgehung vorstellen (da ich keinen Illustrator verwende):

Konvertieren Sie Ihre Screenshots in 8-Bit-PNGs

GraphicsMagick und / oder ImageMagick sind Konsolentools, die für diesen Job geeignet sind. Der folgende Befehl wird in 8-Bit-PNGs konvertiert:

convert original.png -depth 8 converted.png
Socowi
quelle
Wow, danke für die ausführliche Erklärung. Adobe hat noch nicht auf meinen Fehlerbericht geantwortet, aber mit etwas Glück wird Illustrator hoffentlich die richtige 16-Bit-Farbunterstützung hinzufügen. Oder runden Sie sie zumindest korrekt auf 8-Bit-Farbe ab.
Bryan
1

Das ist ein flippiges Problem.

GIMP gibt uns bereits einen Hinweis und bestätigt den Verdacht, dass es sich um etwas mit dem Farbprofil des Screenshots handelt. Wenn Sie es in Ihr tägliches sRGB und 8 Bit pro Kanal konvertieren, kann Illustrator möglicherweise verhindern, dass beim Versuch, es als CMYK abzurufen, Probleme auftreten.

Lucas Flicky
quelle
1

Dies ist viel zu spät, aber eine einfache Problemumgehung (für Mac-Benutzer) besteht darin, das PNG in der Vorschau zu öffnen und es dann als PNG zu exportieren, wobei die Standard-16-Bit-Option auf die 8-Bit-Option umgeschaltet wird. Es erfordert keine zusätzliche Software und dauert nur wenige Sekunden.

Lehm
quelle