इलस्ट्रेटर में खोले जाने पर कुछ पीएनजी फाइलों के रंग विकृत क्यों हो रहे हैं?


11

मैं इलस्ट्रेटर में एक आईफोन स्क्रीनशॉट खोलने की कोशिश कर रहा था, लेकिन किसी कारण से रंग विकृत हो गए। अगर मैं उसी फाइल को किसी अन्य एप्लिकेशन (फोटोशॉप, जीआईएमपी, प्रीव्यू, आदि) में खोलता हूं तो रंग ठीक हो जाते हैं। जिज्ञासु बात यह है कि यह केवल कुछ स्क्रीनशॉट के साथ होता है, जैसा कि मैंने होम स्क्रीन के एक स्क्रीनशॉट के साथ-साथ परीक्षण किया, जिसे इलस्ट्रेटर ने रंगों को विकृत किए बिना खोला।

हालांकि, GIMP के साथ, एक संवाद पॉपिंग बताते हैं:

छवि 'IMG_1199.PNG' में रंगीन प्रोफ़ाइल है और एम्बेड की गई है:

P3 प्रदर्शित करें

RGB वर्किंग स्पेस (sRGB बिल्ट-इन) में इमेज कन्वर्ट करें?

रंग प्रोफ़ाइल को रखने या परिवर्तित करने के विकल्प के साथ; जो मुझे लगता है कि इलस्ट्रेटर उपरोक्त रंग प्रोफ़ाइल को नहीं पहचान सकता है।

यहाँ मूल छवि सीधे फोन से [बाएं] और छवि को इलस्ट्रेटर [दाएं] से खोला (तब बचाया गया):

iPhone कीपैड स्क्रीनशॉट iPhone कीपैड स्क्रीनशॉट विकृत


अपडेट करें

GIMP में रंग प्रोफ़ाइल को परिवर्तित करना, सहेजना, फिर फ़ाइल को इलस्ट्रेटर में फिर से खोलना समस्या को ठीक करता है। यह मेरे संदेह की पुष्टि करता है कि प्रदर्शन P3 रंग प्रोफ़ाइल मुद्दा है, जो मेरे सवाल को कुछ हद तक बदल देता है: मैं पहले से छवि को परिवर्तित किए बिना इलस्ट्रेटर में छवि कैसे खोल सकता हूं?

ऐसा लगता है कि यह इलस्ट्रेटर में एक बग हो सकता है, इसलिए मैंने एडोब को एक बग रिपोर्ट प्रस्तुत की है। यदि रिपोर्ट निर्णायक है, या Adobe समाधान प्रदान करता है तो मैं अपडेट करूंगा।


1
साइकेडेलिक! मैं ऐसे लोगों को जानता हूं जो इसे देखने के लिए गोलियां खाते हैं। हे ब्रायन, GDSE में आपका स्वागत है और आपके प्रश्न के लिए धन्यवाद। यदि आपके पास इस एसई के बारे में कोई प्रश्न हैं, तो सहायता केंद्र पर एक नज़र डालें या हमें ग्राफिक डिज़ाइन चैट में शामिल होने के लिए स्वतंत्र महसूस करें ! अपना योगदान देते रहें और अपने समय का आनंद लें।
विंसेंट

मेरे पास iPhone स्क्रीनशॉट के साथ समस्याओं का भार है, लेकिन मैंने कभी ऐसा कुछ नहीं किया। प्रभावशाली।
कै से

क्या एक पी 3 रंग प्रोफ़ाइल 10 बीपीपी रंग (उर्फ 30 बिट) का मतलब है? यह एक बग है, या एआई सिर्फ 10bpp (ARGB 02 10 10 10) को संभालने में सक्षम नहीं है? पूछताछ के मन जानना चाहते हैं। (संपादित करें: स्पष्ट होने के लिए, मैं वास्तव में जानना चाहता हूं, क्योंकि मेरे पास कोई सुराग नहीं है)
योरिक

अजीब बात है: दोनों, GraphicsMagick's identifyऔर Linux ' file, अपने पोस्ट किए गए स्क्रीनशॉट को अपने .png प्रत्यय के बावजूद jpg के रूप में बाईं ओर पहचानते हैं। क्या यह ओरिजिनल / अनमॉडिफाइड स्क्रीनशॉट है? क्या आपने .png को प्रत्यय का नाम दिया है? शायद यही समस्या है। प्रत्यय को jpg में बदलने की कोशिश करें और इसे फिर से खोलें।
सोकोवई

@Socowi हुह, यह अजीब है, मैंने इसे स्वयं macOS fileपर कमांड का उपयोग करके परीक्षण किया । यह JPEG image dataसाथ ही साथ आता है , भले ही जानकारी विंडो अभी भी इसे पीएनजी फ़ाइल के रूप में प्रदर्शित करती है। यह कुछ होना चाहिए Imgur तस्वीरें पैमाने पर करने के लिए करता है। यदि आप छवि को पूर्ण आकार के लिंक से डाउनलोड करते हैं तो fileकमांड को इसे PNG फ़ाइल के रूप में सही ढंग से पहचानना चाहिए।
ब्रायन

जवाबों:


9

शायद क्या होता है: स्क्रीनशॉट 16-बिट png है, लेकिन इलस्ट्रेटर इसे 8-बिट png के रूप में पढ़ता है, केवल 8 लोअर (!) बिट्स का उपयोग करता है।

व्याख्या

निम्नलिखित स्पष्टीकरण के लिए हम मानते हैं कि स्क्रीनशॉट एक 16-बिट ग्रेस्केल छवि है, जो कि प्रत्येक पिक्सेल एक संख्या है

काला = 0 = 0x0000 = 0 बी 0000 0000 0000 0000

तथा

(16-बिट) सफेद = 2 ^ 16-1 = 65535 = 0xFFFF = 0 बी 1111 1111 1111 1111।

(0x, हेक्साडेसिमल संख्याओं को दर्शाता है और 0b बाइनरी संख्याओं को दर्शाता है)

इलस्ट्रेटर इन 16 बिट्स में से केवल 8 को लोड करने के लिए लगता है, दुर्भाग्यवश गलत वाले, जो कम से कम महत्वपूर्ण हैं। कम से कम महत्वपूर्ण बिट्स चुनना ही एकमात्र समस्या है।

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

आयात के बाद, इलस्ट्रेटर व्याख्या को स्केल करेगा (कौन सी संख्या सफेद है, जो काला है) नई अधिकतम संख्या के अनुसार:

(8-बिट) सफेद = 2 ^ 8-1 = 255 = 0xFF = 0xb 1111 1111।

मान लें कि हमारे एक पिक्सेल का मूल्य 0 बी 1111 1111 0000 00001 = 0xFF01 = 65281 है, जो लगभग सफेद है। आयात के बाद, मान 0 बी 0000 0001 = 0x01 = 1 होगा, जो लगभग काला है।

यह "राउंडिंग" की तरह है 999.1 से 1 - पूरी तरह से गलत!

सिमुलेशन

हम कैसे सुनिश्चित कर सकते हैं कि वर्णित समस्या हमारी समस्या है? हम बग का अनुकरण करते हैं!

निम्नलिखित पायथन कार्यक्रम ऊपर वर्णित 16-बिट स्क्रीनशॉट को लोड करता है।
(कृपया मुझे जज न करें, यह मेरा पहला अजगर कार्यक्रम है।)

#! /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.png
क्लिक करें यहाँ मूल आकार के लिए, और यहाँ ओपी के संस्करण के साथ तुलना करने के लिए।

जैसा कि हम देख सकते हैं, हमारे सिमुलेशन बिल्कुल समान परिणाम देता है।

वैकल्पिक हल

मैं केवल एक वर्कअराउंड के बारे में सोच सकता हूं (क्योंकि मैं इलस्ट्रेटर का उपयोग नहीं करता हूं):

अपने स्क्रीनशॉट को 8-बिट pngs में कनवर्ट करें

GraphicsMagick और / या ImageMagick कंसोल टूल हैं जो इस काम के लिए आश्वस्त हैं। निम्न आदेश 8-बिट pngs में कनवर्ट करता है:

convert original.png -depth 8 converted.png

वाह, गहराई से स्पष्टीकरण के लिए धन्यवाद। Adobe ने अभी तक मेरी बग रिपोर्ट का जवाब नहीं दिया है, लेकिन किसी भी भाग्य के साथ उम्मीद है कि वे इलस्ट्रेटर के लिए उचित 16-बिट रंग समर्थन जोड़ देंगे। या बहुत कम से कम उन्हें सही ढंग से 8-बिट रंग में गोल करें।
ब्रायन

1

अब यह कुछ फंकी इश्यू है।

जीआईएमपी ने पहले ही हमें कुछ सुराग दिया, इस संदेह की पुष्टि करते हुए कि यह स्क्रीनशॉट के रंग प्रोफ़ाइल के साथ कुछ है। इसे अपने हर रोज़ sRGB और 8bit प्रति चैनल में बदलने से Illustrator को सीएमवाईके के रूप में इसे खींचने की कोशिश में चीजों को गड़बड़ करने से बचा जा सकता है।


1

यह देर हो चुकी है, लेकिन पूर्वावलोकन में PNG खोलने के लिए एक सरल समाधान (मैक उपयोगकर्ताओं के लिए) है, तो इसे PNG के रूप में निर्यात करें, डिफ़ॉल्ट 16-बिट विकल्प को 8-बिट विकल्प पर स्विच करना। इसके लिए किसी अतिरिक्त सॉफ्टवेयर की आवश्यकता नहीं है, और केवल कुछ सेकंड लगते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.