¿Por qué los colores de ciertos archivos PNG se distorsionan cuando se abren en Illustrator?

11

Intenté abrir una captura de pantalla de iPhone en Illustrator, pero por alguna razón los colores están distorsionados. Si abro el mismo archivo en cualquier otra aplicación (Photoshop, GIMP, Vista previa, etc.), los colores se muestran bien. Lo curioso es que esto solo ocurre con ciertas capturas de pantalla, ya que también probé una captura de pantalla de la pantalla de inicio, que Illustrator abrió sin distorsionar los colores.

Sin embargo, con GIMP, aparece un cuadro de diálogo que dice:

La imagen 'IMG_1199.PNG' tiene un perfil de color incrustado:

Display P3

¿Convertir la imagen al espacio de trabajo RGB (sRGB incorporado)?

Con la opción de mantener o convertir el perfil de color; lo que me hace pensar que Illustrator puede no reconocer el perfil de color mencionado anteriormente.

Aquí está la imagen original directamente desde el teléfono [izquierda] y la imagen abierta (luego guardada) desde Illustrator [derecha]:

Captura de pantalla del teclado del iPhone Captura de pantalla del teclado del iPhone distorsionada


Actualizar

Convertir el perfil de color en GIMP, guardarlo y luego abrir el archivo nuevamente en Illustrator soluciona el problema. Esto parece confirmar mi sospecha de que el perfil de color Display P3 es el problema, lo que cambia un poco mi pregunta: ¿cómo puedo abrir la imagen en Illustrator sin convertir primero la imagen de antemano?

Parece que puede ser un error en Illustrator, por lo que he enviado un informe de error a Adobe. Actualizaré si el informe es concluyente o si Adobe proporciona una solución.

Bryan
fuente
1
¡Psicodélico! Conozco personas que comen píldoras para ver esto. Hola Bryan, bienvenido a GDSE y gracias por tu pregunta. Si tiene alguna pregunta sobre este SE, eche un vistazo al centro de ayuda o siéntase libre de unirse a nosotros en Graphic Design Chat . Sigue contribuyendo y disfruta tu tiempo aquí.
Vincent
He tenido muchos problemas con las capturas de pantalla de iPhone, pero nunca he tenido algo así. Impresionante.
Cai
¿Un perfil de color P3 implica un color de 10 bpp (también conocido como 30 bits)? ¿Es esto un error o la IA no puede manejar 10bpp (ARGB 02 10 10 10)? Las mentes curiosas quieren saber. (Editar: para ser claros, realmente quiero saber, ya que no tengo idea)
Yorik
Extraño: Ambos, GraphicsMagick's identifyy Linux ' file, identifican su captura de pantalla publicada a la izquierda como un jpg a pesar de su sufijo .png. ¿Es esta la captura de pantalla original / no modificada? ¿Cambiaste el nombre del sufijo a .png? Quizás ese sea el problema. Intente cambiar el sufijo a jpg y ábralo nuevamente.
Socowi
@Socowi Huh, eso es extraño, lo probé yo mismo usando el filecomando en macOS. También aparece JPEG image data, aunque la ventana de información todavía lo muestra como un archivo PNG. Debe ser algo que Imgur haga para escalar las fotos. Si descarga la imagen desde el enlace de tamaño completo, el filecomando debería reconocerla correctamente como un archivo PNG.
Bryan

Respuestas:

9

Lo que probablemente sucede: la captura de pantalla es un png de 16 bits, pero el ilustrador lo lee como un png de 8 bits, utilizando solo los 8 bits inferiores (!).

Explicación

Para la siguiente explicación, suponemos que la captura de pantalla es una imagen en escala de grises de 16 bits, es decir, cada píxel es un número entre

negro = 0 = 0x0000 = 0b 0000 0000 0000 0000

y

(16 bits) blanco = 2 ^ 16-1 = 65535 = 0xFFFF = 0b 1111 1111 1111 1111.

(0x denota números hexadecimales y 0b denota números binarios)

Illustrator parece cargar solo 8 de estos 16 bits, desafortunadamente los incorrectos, que son los menos significativos. Elegir los bits menos significativos es el único problema.

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

Después de la importación, el ilustrador escalará la interpretación (qué número es blanco y negro) de acuerdo con el nuevo número máximo:

(8 bits) blanco = 2 ^ 8-1 = 255 = 0xFF = 0xb 1111 1111.

Suponga que uno de nuestros píxeles tenía el valor 0b 1111 1111 0000 00001 = 0xFF01 = 65281, que es casi blanco. Después de la importación, el valor será 0b 0000 0001 = 0x01 = 1, que es casi negro.

Es como "redondear" 999.1 a 1, ¡completamente equivocado!

Simulación

¿Cómo podemos estar seguros de que el problema descrito es nuestro problema? Simulamos el error!

El siguiente programa de Python carga la captura de pantalla de 16 bits como se describió anteriormente.
(Por favor, no me juzguen, es mi primer programa de Python).

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

Error simulado
el resultado bug.png
Haga clic aquí para ver el tamaño original, y aquí para comparar con la versión de OP.

Como podemos ver, nuestra simulación produce exactamente el mismo resultado.

Solución alterna

Solo puedo pensar en una solución alternativa (ya que no uso ilustrador):

Convierte tus capturas de pantalla a pngs de 8 bits

GraphicsMagick y / o ImageMagick son herramientas de consola que son convenientes para este trabajo. El siguiente comando se convierte a pngs de 8 bits:

convert original.png -depth 8 converted.png
Socowi
fuente
Wow, gracias por la explicación en profundidad. Adobe aún no ha respondido a mi informe de error, pero con suerte agregarán soporte de color de 16 bits a Illustrator. O al menos redondearlos al color de 8 bits correctamente.
Bryan
1

Ahora que es un problema funky.

GIMP ya nos da una pista, confirmando la sospecha de que es algo con el perfil de color de la captura de pantalla. Convirtiéndolo en su sRGB de todos los días y 8 bits por canal puede evitar que Illustrator arruine las cosas al tratar de extraerlo como CMYK.

Lucas Flicky
fuente
1

Esto es MUY tarde, pero una solución simple (para usuarios de Mac) es abrir el PNG en Vista previa, luego Exportarlo como PNG cambiando la opción predeterminada de 16 bits a la opción de 8 bits. No requiere ningún software adicional y solo lleva unos segundos.

Arcilla
fuente