ইলাস্ট্রেটারে খোলার সময় কেন কিছু নির্দিষ্ট পিএনজি ফাইলের রঙ বিকৃত হচ্ছে?


11

আমি ইলাস্ট্রেটারে একটি আইফোন স্ক্রিনশট খোলার চেষ্টা করছিলাম, তবে কোনও কারণে রঙগুলি বিকৃত হয়েছে। যদি আমি একই ফাইলটি অন্য কোনও অ্যাপ্লিকেশন (ফটোশপ, জিআইএমপি, পূর্বরূপ, ইত্যাদি) খুলি তবে রংগুলি সূক্ষ্মভাবে রেন্ডার করা হয়। কৌতূহলজনক বিষয়টি হ'ল এটি কেবলমাত্র কিছু নির্দিষ্ট স্ক্রিনশটগুলির সাথেই ঘটে, যেমন আমি হোম স্ক্রিনের একটি স্ক্রিনশটও পরীক্ষা করেছিলাম, যা চিত্রক রঙগুলি বিকৃতি না করেই খোলেন।

যদিও, জিম্পের সাথে, একটি ডায়ালগ পপ আপ করে জানিয়েছে:

'IMG_1199.PNG' ছবিটিতে রয়েছে এবং রঙিন এম্বেড রয়েছে:

পি 3 প্রদর্শন করুন

চিত্রটি আরজিবি ওয়ার্কিং স্পেসে রূপান্তর করবেন (এসআরজিবি অন্তর্নির্মিত)?

রঙ প্রোফাইল রাখুন বা রূপান্তর করতে বিকল্পের সাথে; যা আমাকে মনে করে যে চিত্রকরা পূর্বোক্ত বর্ণিত প্রোফাইলটি স্বীকৃতি দিতে পারে না।

এখানে আসল চিত্রটি সরাসরি ফোন [বাম] থেকে এবং চিত্রটি খোলার (তারপরে সংরক্ষিত) ইলাস্ট্রেটর [ডান] থেকে:

আইফোন কীপ্যাড স্ক্রিনশট আইফোন কীপ্যাড স্ক্রিনশট বিকৃত


হালনাগাদ

জিম্পে রঙের প্রোফাইল রূপান্তরিত করা, সংরক্ষণ করা, আবার ইলাস্ট্রেটারে আবার ফাইলটি খোলার বিষয়টি সমস্যার সমাধান করে না। এটি আমার সন্দেহের বিষয়টি নিশ্চিত করে মনে হচ্ছে যে ডিসপ্লে পি 3 রঙের প্রোফাইলটিই ইস্যু, যা আমার প্রশ্নকে কিছুটা বদলে দেয়: আমি কীভাবে ইলাস্ট্রেটারে ছবিটি আগেই চিত্রটি রূপান্তর না করে খুলতে পারি?

দেখে মনে হচ্ছে এটি চিত্রের মধ্যে কোনও বাগ থাকতে পারে, তাই আমি অ্যাডোবকে একটি বাগ রিপোর্ট জমা দিয়েছি। প্রতিবেদনটি চূড়ান্ত হলে বা অ্যাডোব কোনও সমাধান দিলে আমি আপডেট করব।


1
সাইকেডেলিক! আমি এটি দেখতে লোকেদের খাওয়া লোকগুলি জানি। আরে ব্রায়ান, জিডিএসইতে আপনাকে স্বাগতম এবং আপনার প্রশ্নের জন্য ধন্যবাদ। এই এসই সম্পর্কে আপনার যদি কোনও প্রশ্ন থাকে, সহায়তা কেন্দ্রটি দেখুন বা গ্রাফিক ডিজাইনের চ্যাটে আমাদের সাথে বিনা দ্বিধায় যোগদান করুন ! এখানে অবদান রাখুন এবং আপনার সময় উপভোগ করুন।
ভিনসেন্ট

আইফোনের স্ক্রিনশট নিয়ে আমার প্রচুর সমস্যা হয়েছিল তবে এর আগে আমার আর কখনও হয়নি। চিত্তাকর্ষক।
কাই

কোনও পি 3 রঙের প্রোফাইল 10bpp রঙ (ওরফে 30 বিট) বোঝায়? এটি কি কোনও বাগ, বা এআই কেবল 10 বিপিপি (এআরজিবি 02 10 10 10) পরিচালনা করতে সক্ষম নয়? জিজ্ঞাসা করা মনগুলি জানতে চান। (সম্পাদনা করুন: পরিষ্কার হতে, আমি সত্যিই জানতে চাই, যেহেতু আমার কোনও ক্লু নেই)
ইয়োরিক

অদ্ভুত: গ্রাফিক্স ম্যাজিক identifyএবং লিনাক্স উভয়ই, fileআপনার পোস্ট স্ক্রিনশটটি .png প্রত্যয় সত্ত্বেও jpg হিসাবে বাম দিকে চিহ্নিত করুন। এটি কি আসল / অপরিবর্তিত স্ক্রিনশট? আপনি প্রত্যয়টির নাম .png রেখেছিলেন? হয়তো এটাই সমস্যা। প্রত্যয়টি jpg এ পরিবর্তন করার চেষ্টা করুন এবং এটি আবার খুলুন।
সোসোকি

@ সোকোই হু, এটি আশ্চর্যের বিষয়, আমি ম্যাকস-এর fileকমান্ডটি ব্যবহার করে নিজেই এটি পরীক্ষা করেছি । এটি JPEG image dataপাশাপাশি উঠে আসে , তথাপি উইন্ডোটি এখনও এটি পিএনজি ফাইল হিসাবে প্রদর্শন করে। ফটোগুলি স্কেল করার জন্য ইমাগর অবশ্যই এমন কিছু হতে পারে। আপনি যদি পূর্ণ আকারের লিঙ্কটি থেকে চিত্রটি ডাউনলোড করেন তবে fileকমান্ডটি এটি পিএনজি ফাইল হিসাবে সঠিকভাবে স্বীকৃত হবে।
ব্রায়ান

উত্তর:


9

সম্ভবত যা ঘটে: স্ক্রিনশটটি একটি 16-বিট পিএনজি, তবে চিত্রকরা এটি 8-বিট পিএনজি হিসাবে পড়েন, কেবল 8 টি নিম্ন (!) বিট ব্যবহার করে।

ব্যাখ্যা

নিম্নলিখিত ব্যাখ্যার জন্য আমরা ধরে নিই যে স্ক্রিনশটটি একটি 16-বিট গ্রেস্কেল চিত্র, এটি প্রতিটি পিক্সেলের মধ্যে একটি সংখ্যা

কালো = 0 = 0x0000 = 0 বি 0000 0000 0000 0000

এবং

(16-বিট) সাদা = 2 ^ 16-1 = 65535 = 0xFFFF = 0 বি 1111 1111 1111 1111।

(0x হেক্সাডেসিমাল সংখ্যা এবং 0 বি বাইনারি সংখ্যা বোঝায়)

চিত্রনায়ক মনে করে যে এই 16 টি বিটগুলির মধ্যে কেবল 8 টিই লোড করা হয়েছে, দুর্ভাগ্যবশত ভুলগুলিও এটি সবচেয়ে কম গুরুত্বপূর্ণ। কমপক্ষে উল্লেখযোগ্য বিট নির্বাচন করা একমাত্র সমস্যা।

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

আমদানির পরে, চিত্রকারকটি নতুন সর্বাধিক সংখ্যা অনুসারে ব্যাখ্যাটি স্কেল করবে (কোন সংখ্যাটি সাদা, কোনটি কালো)

(8-বিট) সাদা = 2 ^ 8-1 = 255 = 0xFF = 0xb 1111 1111।

ধরুন আমাদের কোনও পিক্সেলের মান 0 বি 1111 1111 0000 00001 = 0xFF01 = 65281 ছিল যা প্রায় সাদা nearly আমদানির পরে, মান 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
ক্লিক করুন এখানে মূল আকার জন্য, এবং এখানে ওপি এর সংস্করণের সাথে তুলনা।

আমরা দেখতে পাচ্ছি, আমাদের সিমুলেশন একই ফলাফল দেয় yield

কার্যসংক্রান্ত

আমি কেবলমাত্র একটি কাজের কথা ভাবতে পারি (যেহেতু আমি চিত্রকর ব্যবহার করি না):

আপনার স্ক্রিনশটগুলি 8-বিট পিএনজিতে রূপান্তর করুন

গ্রাফিক্স ম্যাগিক এবং / অথবা ইমেজম্যাগিক কনসোল সরঞ্জাম যা এই কাজের জন্য উপযুক্ত। নিম্নলিখিত কমান্ডটি 8-বিট পিএনজিতে রূপান্তর করে:

convert original.png -depth 8 converted.png

বাহ, গভীরতর ব্যাখ্যার জন্য আপনাকে ধন্যবাদ। অ্যাডোব এখনও আমার বাগের প্রতিবেদনে সাড়া দেয়নি, তবে কোনও ভাগ্য নিয়ে আশা করি তারা চিত্রের সাথে যথাযথ 16-বিট রঙ সমর্থন যোগ করবে। বা খুব কমপক্ষে এগুলি 8-বিট রঙে সঠিকভাবে গোল করুন।
ব্রায়ান

1

এখন এটি কিছু মজার বিষয়।

স্ক্রিনশটের রঙিন প্রোফাইলের সাথে এটি এমন কিছু সন্দেহের বিষয়টি নিশ্চিত করে জিম্প ইতিমধ্যে আমাদের কিছু সূত্র সরবরাহ করেছে। এটিকে আপনার প্রতিদিনের এসআরজিবি এবং চ্যানেল অনুসারে 8 বিট রূপান্তর করা ইলাস্ট্রেটরকে সিএমওয়াইকে হিসাবে টানতে চেষ্টা করার বিষয়গুলিতে গোলমাল করা এড়াতে পারে।


1

এটি ওয়ে দেরিতে, তবে একটি সাধারণ কাজ (ম্যাক ব্যবহারকারীদের জন্য) পূর্বরূপে পিএনজি খুলতে হবে, তারপরে এটি পিএনজি হিসাবে রফতানি করুন ডিফল্ট 16-বিট বিকল্পটি 8-বিট বিকল্পে স্যুইচ করুন। এটির জন্য কোনও অতিরিক্ত সফ্টওয়্যার প্রয়োজন হয় না এবং এটি কয়েক সেকেন্ড সময় নেয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.