Tại sao màu sắc của các tệp PNG nhất định bị biến dạng khi mở trong Illustrator?


11

Tôi đã cố mở ảnh chụp màn hình iPhone trong Illustrator, nhưng vì một số lý do, màu sắc bị biến dạng. Nếu tôi mở cùng một tệp trong bất kỳ ứng dụng nào khác (Photoshop, GIMP, Xem trước, v.v.), màu sắc sẽ được hiển thị tốt. Điều gây tò mò là điều này chỉ xảy ra với một số ảnh chụp màn hình nhất định, vì tôi cũng đã kiểm tra ảnh chụp màn hình của màn hình chính, mà Illustrator đã mở mà không làm biến dạng màu sắc.

Mặc dù, với GIMP, một hộp thoại hiện lên thông báo:

Hình ảnh 'IMG_1199.PNG' có và cấu hình màu được nhúng:

Hiển thị P3

Chuyển đổi hình ảnh sang không gian làm việc RGB (tích hợp sRGB)?

Với tùy chọn giữ hoặc chuyển đổi cấu hình màu; Điều này khiến tôi nghĩ rằng Illustrator có thể không nhận ra cấu hình màu nói trên.

Đây là hình ảnh gốc trực tiếp từ điện thoại [trái] và hình ảnh được mở (sau đó được lưu) từ Illustrator [phải]:

Ảnh chụp màn hình bàn phím iPhone Ảnh chụp màn hình bàn phím iPhone bị bóp méo


Cập nhật

Chuyển đổi cấu hình màu trong GIMP, lưu, sau đó mở lại tệp trong Illustrator sẽ khắc phục sự cố. Điều này dường như xác nhận sự nghi ngờ của tôi rằng cấu hình màu Display P3 là vấn đề, điều này thay đổi phần nào câu hỏi của tôi: làm thế nào tôi có thể mở hình ảnh trong Illustrator mà không cần chuyển đổi hình ảnh trước?

Có vẻ như đây có thể là một lỗi trong Illustrator, vì vậy tôi đã gửi báo cáo lỗi cho Adobe. Tôi sẽ cập nhật nếu báo cáo là kết luận hoặc nếu Adobe cung cấp giải pháp.


1
Ảo giác! Tôi biết những người ăn thuốc để thấy điều này. Này Bryan, chào mừng bạn đến với GDSE và cảm ơn câu hỏi của bạn. Nếu bạn có bất kỳ câu hỏi nào về SE này, hãy xem trung tâm trợ giúp hoặc thoải mái tham gia với chúng tôi trong Trò chuyện Thiết kế Đồ họa ! Hãy tiếp tục đóng góp và tận hưởng thời gian của bạn ở đây.
Vincent

Tôi đã có vô số vấn đề với ảnh chụp màn hình iPhone nhưng tôi chưa bao giờ gặp phải vấn đề như vậy. Ấn tượng.
Cai

Cấu hình màu P3 có ngụ ý màu 10bpp (hay còn gọi là 30 bit) không? Đây có phải là lỗi không, hay AI chỉ không thể xử lý 10bpp (ARGB 02 10 10 10)? Tìm hiểu tâm trí muốn biết. (chỉnh sửa: để rõ ràng, tôi thực sự muốn biết, vì tôi không có manh mối)
Yorik

Lạ: Cả hai, GraphicsMagick's identifyvà Linux ' file, xác định ảnh chụp màn hình được đăng của bạn ở bên trái dưới dạng jpg mặc dù hậu tố .png của nó. Đây có phải là ảnh chụp màn hình gốc / chưa sửa đổi? Bạn đã đổi tên hậu tố thành .png? Có lẽ đó là vấn đề. Cố gắng thay đổi hậu tố thành jpg và mở lại.
Socowi

@Socowi Huh, thật lạ, tôi đã tự mình kiểm tra nó bằng cách sử dụng filelệnh trên macOS. Nó cũng xuất hiện JPEG image data, mặc dù cửa sổ thông tin vẫn hiển thị dưới dạng tệp PNG. Nó phải là một cái gì đó Imgur làm để phóng to các bức ảnh. Nếu bạn tải xuống hình ảnh từ liên kết kích thước đầy đủ , filelệnh sẽ nhận ra nó chính xác như một tệp PNG.
Bryan

Câu trả lời:


9

Điều có thể xảy ra: Ảnh chụp màn hình là png 16 bit, nhưng họa sĩ minh họa đọc nó dưới dạng png 8 bit, chỉ sử dụng 8 bit thấp hơn (!).

Giải trình

Đối với lời giải thích sau đây, chúng tôi giả sử rằng ảnh chụp màn hình là ảnh thang độ xám 16 bit, tức là mỗi pixel là một số nằm giữa

đen = 0 = 0x0000 = 0b 0000 0000 0000 0000

(16-bit) trắng = 2 ^ 16-1 = 65535 = 0xFFFF = 0b 1111 1111 1111 1111.

(0x biểu thị số thập lục phân và 0b biểu thị số nhị phân)

Illustrator dường như chỉ tải 8 trong số 16 bit này, không may là sai, đó là những lỗi ít quan trọng nhất. Chọn các bit ít quan trọng nhất là vấn đề duy nhất.

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

Sau khi nhập, họa sĩ minh họa sẽ chia tỷ lệ diễn giải (số nào là màu trắng, màu đen) theo số lượng tối đa mới:

(8-bit) trắng = 2 ^ 8-1 = 255 = 0xFF = 0xb 1111 1111.

Giả sử một trong số các pixel của chúng tôi có giá trị 0b 1111 1111 0000 00001 = 0xFF01 = 65281, gần như là màu trắng. Sau khi nhập, giá trị sẽ là 0b 0000 0001 = 0x01 = 1, gần như là màu đen.

Giống như "làm tròn" 999.1 đến 1 - hoàn toàn sai!

Mô phỏng

Làm thế nào chúng ta có thể chắc chắn rằng vấn đề được mô tả là vấn đề của chúng ta? Chúng tôi mô phỏng lỗi!

Chương trình python sau đây tải ảnh chụp màn hình 16 bit như mô tả ở trên.
(Xin đừng phán xét tôi, đây là chương trình trăn đầu tiên của tôi.)

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

Lỗi mô phỏng
kết quả bug.png
Nhấp vào đây để biết kích thước ban đầu và tại đây để so sánh với phiên bản của OP.

Như chúng ta có thể thấy, mô phỏng của chúng tôi mang lại kết quả chính xác như nhau.

Cách giải quyết

Tôi chỉ có thể nghĩ về một cách giải quyết (vì tôi không sử dụng họa sĩ minh họa):

Chuyển đổi ảnh chụp màn hình của bạn thành pngs 8 bit

GraphicsMagick và / hoặc ImageMagick là các công cụ giao diện điều khiển thuận tiện cho công việc này. Lệnh sau chuyển đổi thành png 8 bit:

convert original.png -depth 8 converted.png

Wow, cảm ơn bạn đã giải thích sâu sắc. Adobe chưa phản hồi báo cáo lỗi của tôi, nhưng với bất kỳ may mắn nào, hy vọng họ sẽ thêm hỗ trợ màu 16 bit thích hợp cho Illustrator. Hoặc ít nhất làm tròn chúng thành màu 8 bit một cách chính xác.
Bryan

1

Bây giờ đó là một số vấn đề sôi nổi.

GIMP đã cung cấp cho chúng tôi một số manh mối, xác nhận sự nghi ngờ rằng đó là thứ gì đó có cấu hình màu của ảnh chụp màn hình. Chuyển đổi nó sRGB hàng ngày và 8 bit cho mỗi kênh của bạn có thể tránh Illustrator làm rối tung mọi thứ khi cố gắng kéo nó thành CMYK.


1

Đây là WAY muộn, nhưng một cách giải quyết đơn giản (đối với người dùng Mac) là mở PNG trong Bản xem trước, sau đó Xuất dưới dạng PNG chuyển đổi tùy chọn 16 bit mặc định sang tùy chọn 8 bit. Nó không yêu cầu bất kỳ phần mềm bổ sung nào và chỉ mất vài giây.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.